BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • DOGAMÍ Marketplace v2
operations (35.4K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
551
1081
 
1
parameter (or
2
            (or
3
              (or
4
                (or
5
                  (or
6
                    (pair %acceptCounterOffer (nat %token_id)
7
                                              (pair (address %token_origin)
8
                                                    (address %seller)))
9
                    (pair %acceptOffer (address %buyer)
10
                                       (pair (nat %token_id) (address %token_origin))))
11
                  (or (address %addCollection)
12
                      (pair %addToMarketplace
13
                        (or %swap_type
14
                          (pair %dutch (nat %starting_price) (nat %duration))
15
                          (unit %regular))
16
                        (pair (nat %token_id)
17
                              (pair (address %token_origin)
18
                                    (pair (nat %token_price)
19
                                          (pair (timestamp %start_time)
20
                                                (pair (timestamp %end_time)
21
                                                      (pair
22
                                                        (or %recipient (unit %general)
23
                                                                       (address %reserved))
24
                                                        (pair (string %token_symbol)
25
                                                              (pair
26
                                                                (set %accepted_tokens string)
27
                                                                (bool %is_multi_token))))))))))))
28
                (or
29
                  (or
30
                    (pair %collect (nat %swap_id)
31
                                   (pair (string %token_symbol)
32
                                         (pair (nat %amount_ft) (address %to_))))
33
                    (pair %makeCounterOffer (nat %token_id)
34
                                            (pair (address %token_origin)
35
                                                  (pair (address %buyer)
36
                                                        (pair (timestamp %start_time)
37
                                                              (pair
38
                                                                (timestamp %end_time)
39
                                                                (pair
40
                                                                  (string %token_symbol)
41
                                                                  (nat %ft_amount))))))))
42
                  (or (address %removeCollection) (nat %removeFromMarketplace))))
43
              (or
44
                (or
45
                  (or
46
                    (pair %sendOffer (nat %token_id)
47
                                     (pair (address %token_origin)
48
                                           (pair (timestamp %start_time)
49
                                                 (pair (timestamp %end_time)
50
                                                       (pair (string %token_symbol)
51
                                                             (nat %ft_amount))))))
52
                    (int %setOracleTolerance))
53
                  (or (bool %setPause)
54
                      (pair %updateAllowedTokens (string %token_symbol)
55
                                                 (or %direction
56
                                                   (pair %add_token
57
                                                     (address %fa_address)
58
                                                     (string %fa_type))
59
                                                   (unit %remove_token)))))
60
                (or (or (nat %updateFee) (address %updateMultisig))
61
                    (or
62
                      (pair %updateOffer (nat %token_id)
63
                                         (pair (address %token_origin)
64
                                               (pair (timestamp %start_time)
65
                                                     (pair (timestamp %end_time)
66
                                                           (pair (string %token_symbol)
67
                                                                 (nat %ft_amount))))))
68
                      (address %updateOracleAddress)))))
69
            (or
70
              (or (or (nat %updateRoyalties) (address %updateRoyaltiesAddress))
71
                  (or
72
                    (pair %updateSwap (nat %swap_id)
73
                                      (or %action
74
                                        (or
75
                                          (or (nat %update_duration) (nat %update_price))
76
                                          (or (address %update_reserved_address)
77
                                              (nat %update_starting_price)))
78
                                        (pair %update_times (timestamp %start_time)
79
                                                            (timestamp %end_time))))
80
                    (address %updateTreasuryAddress)))
81
              (or
82
                (pair %withdrawCounterOffer (nat %token_id)
83
                                            (pair (address %buyer)
84
                                                  (address %token_origin)))
85
                (pair %withdrawOffer (nat %token_id) (address %token_origin)))));
86
storage (pair (set %collections address)
87
              (pair (address %royalties_address)
88
                    (pair (nat %next_swap_id)
89
                          (pair
90
                            (big_map %tokens
91
                              (pair (nat %token_id) (address %token_origin))
92
                              nat)
93
                            (pair
94
                              (big_map %counter_offers
95
                                (pair (address %buyer)
96
                                      (pair (address %seller)
97
                                            (pair (nat %token_id)
98
                                                  (address %token_origin))))
99
                                (pair
100
                                  (pair (pair (timestamp %end_time) (nat %ft_amount))
101
                                        (pair (address %seller) (timestamp %start_time)))
102
                                  (string %token_symbol)))
103
                              (pair
104
                                (big_map %swaps nat
105
                                                (pair (address %owner)
106
                                                      (pair (nat %token_id)
107
                                                            (pair
108
                                                              (address %token_origin)
109
                                                              (pair (bool %is_dutch)
110
                                                                    (pair
111
                                                                      (bool %is_reserved)
112
                                                                      (pair
113
                                                                        (nat %starting_price)
114
                                                                        (pair
115
                                                                          (nat %token_price)
116
                                                                          (pair
117
                                                                            (timestamp %start_time)
118
                                                                            (pair
119
                                                                              (int %duration)
120
                                                                              (pair
121
                                                                                (timestamp %end_time)
122
                                                                                (pair
123
                                                                                  (address %recipient)
124
                                                                                  (pair
125
                                                                                    (string %ft_symbol)
126
                                                                                    (pair
127
                                                                                      (set %accepted_tokens string)
128
                                                                                      (bool %is_multi_token)))))))))))))))
129
                                (pair
130
                                  (big_map %offers
131
                                    (pair (address %buyer)
132
                                          (pair (nat %token_id) (address %token_origin)))
133
                                    (pair (nat %value)
134
                                          (pair (timestamp %start_time)
135
                                                (pair (timestamp %end_time)
136
                                                      (string %token_symbol)))))
137
                                  (pair (nat %royalties_rate)
138
                                        (pair (nat %management_fee_rate)
139
                                              (pair (bool %paused)
140
                                                    (pair
141
                                                      (big_map %allowed_tokens string
142
                                                                               (pair
143
                                                                                 (string %token_symbol)
144
                                                                                 (pair
145
                                                                                   (address %fa_address)
146
                                                                                   (string %fa_type))))
147
                                                      (pair
148
                                                        (big_map %available_pairs
149
                                                          (pair string string)
150
                                                          string)
151
                                                        (pair (address %oracle)
152
                                                              (pair (address %multisig)
153
                                                                    (pair
154
                                                                      (address %treasury)
155
                                                                      (int %oracle_tolerance))))))))))))))));
156
code { UNPAIR ;
157
       IF_LEFT
158
         { IF_LEFT
159
             { IF_LEFT
160
                 { IF_LEFT
161
                     { IF_LEFT
162
                         { DUP 2 ;
163
                           GET 19 ;
164
                           IF
165
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
166
                             { DUP ;
167
                               GET 3 ;
168
                               DUP 2 ;
169
                               CAR ;
170
                               SENDER ;
171
                               PAIR 3 ;
172
                               DUP 2 ;
173
                               GET 3 ;
174
                               DUP 3 ;
175
                               CAR ;
176
                               DUP 4 ;
177
                               GET 4 ;
178
                               SENDER ;
179
                               PAIR 4 ;
180
                               DUP 3 ;
181
                               GET 3 ;
182
                               DUP 4 ;
183
                               CAR ;
184
                               PAIR ;
185
                               DUP 5 ;
186
                               GET 13 ;
187
                               DUP 4 ;
188
                               GET ;
189
                               IF_NONE
190
                                 { DIG 2 ; DROP ; PUSH nat 116 ; FAILWITH }
191
                                 { DUP 6 ;
192
                                   GET 13 ;
193
                                   NONE (pair nat
194
                                              (pair timestamp (pair timestamp string))) ;
195
                                   DIG 5 ;
196
                                   UPDATE ;
197
                                   SWAP ;
198
                                   PAIR } ;
199
                               UNPAIR ;
200
                               DUP 6 ;
201
                               GET 9 ;
202
                               DUP 5 ;
203
                               GET ;
204
                               IF_NONE
205
                                 { DIG 3 ; DROP ; PUSH nat 141 ; FAILWITH }
206
                                 { DUP 7 ;
207
                                   GET 9 ;
208
                                   NONE (pair
209
                                          (pair (pair timestamp nat)
210
                                                (pair address timestamp))
211
                                          string) ;
212
                                   DIG 6 ;
213
                                   UPDATE ;
214
                                   SWAP ;
215
                                   PAIR } ;
216
                               UNPAIR ;
217
                               DUP ;
218
                               CAR ;
219
                               CDR ;
220
                               CDR ;
221
                               NOW ;
222
                               COMPARE ;
223
                               LT ;
224
                               IF
225
                                 { DROP 7 ; PUSH nat 143 ; FAILWITH }
226
                                 { PUSH mutez 0 ;
227
                                   AMOUNT ;
228
                                   COMPARE ;
229
                                   NEQ ;
230
                                   PUSH string "XTZ" ;
231
                                   DUP 3 ;
232
                                   CDR ;
233
                                   COMPARE ;
234
                                   EQ ;
235
                                   NOT ;
236
                                   AND ;
237
                                   IF
238
                                     { DROP 7 ; PUSH nat 133 ; FAILWITH }
239
                                     { DUP ;
240
                                       CAR ;
241
                                       CAR ;
242
                                       CAR ;
243
                                       NOW ;
244
                                       COMPARE ;
245
                                       GT ;
246
                                       IF
247
                                         { DROP 7 ; PUSH nat 144 ; FAILWITH }
248
                                         { DUP ;
249
                                           CAR ;
250
                                           CAR ;
251
                                           CDR ;
252
                                           AMOUNT ;
253
                                           PUSH mutez 1 ;
254
                                           SWAP ;
255
                                           EDIV ;
256
                                           IF_NONE
257
                                             { PUSH string "DIV by 0" ; FAILWITH }
258
                                             {} ;
259
                                           CAR ;
260
                                           COMPARE ;
261
                                           NEQ ;
262
                                           PUSH string "XTZ" ;
263
                                           DUP 3 ;
264
                                           CDR ;
265
                                           COMPARE ;
266
                                           EQ ;
267
                                           AND ;
268
                                           IF
269
                                             { DROP 7 ; PUSH nat 114 ; FAILWITH }
270
                                             { PUSH nat 10000 ;
271
                                               DUP 8 ;
272
                                               GET 17 ;
273
                                               DUP 3 ;
274
                                               CAR ;
275
                                               CAR ;
276
                                               CDR ;
277
                                               MUL ;
278
                                               EDIV ;
279
                                               IF_NONE
280
                                                 { PUSH string "DIV by 0" ; FAILWITH }
281
                                                 {} ;
282
                                               CAR ;
283
                                               PUSH nat 10000 ;
284
                                               DUP 3 ;
285
                                               CAR ;
286
                                               CAR ;
287
                                               CDR ;
288
                                               DUP 10 ;
289
                                               GET 15 ;
290
                                               MUL ;
291
                                               EDIV ;
292
                                               IF_NONE
293
                                                 { PUSH string "DIV by 0" ; FAILWITH }
294
                                                 {} ;
295
                                               CAR ;
296
                                               DUP ;
297
                                               DUP 3 ;
298
                                               ADD ;
299
                                               DUP 4 ;
300
                                               CAR ;
301
                                               CAR ;
302
                                               CDR ;
303
                                               SUB ;
304
                                               ISNAT ;
305
                                               IF_NONE { PUSH nat 105 ; FAILWITH } {} ;
306
                                               NIL operation ;
307
                                               NIL (pair address
308
                                                         (list (pair address
309
                                                                    (pair nat nat)))) ;
310
                                               NIL (pair address (pair nat nat)) ;
311
                                               PUSH nat 1 ;
312
                                               DUP 13 ;
313
                                               CAR ;
314
                                               SENDER ;
315
                                               PAIR 3 ;
316
                                               CONS ;
317
                                               SELF_ADDRESS ;
318
                                               PAIR ;
319
                                               CONS ;
320
                                               DUP 11 ;
321
                                               GET 3 ;
322
                                               CONTRACT %transfer (list (pair address
323
                                                                             (list (pair
324
                                                                                    address
325
                                                                                    (pair
326
                                                                                      nat
327
                                                                                      nat))))) ;
328
                                               IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
329
                                               SWAP ;
330
                                               MAP { DUP ;
331
                                                     CDR ;
332
                                                     MAP { DUP ;
333
                                                           GET 4 ;
334
                                                           DUP 2 ;
335
                                                           GET 3 ;
336
                                                           PAIR ;
337
                                                           SWAP ;
338
                                                           CAR ;
339
                                                           PAIR } ;
340
                                                     SWAP ;
341
                                                     CAR ;
342
                                                     PAIR } ;
343
                                               SWAP ;
344
                                               PUSH mutez 0 ;
345
                                               DIG 2 ;
346
                                               TRANSFER_TOKENS ;
347
                                               CONS ;
348
                                               DUP 11 ;
349
                                               SENDER ;
350
                                               SELF_ADDRESS ;
351
                                               DUP 10 ;
352
                                               GET 6 ;
353
                                               DIG 10 ;
354
                                               CAR ;
355
                                               DIG 5 ;
356
                                               PAIR 6 ;
357
                                               UNPAIR 6 ;
358
                                               PUSH nat 0 ;
359
                                               DUP 3 ;
360
                                               COMPARE ;
361
                                               GT ;
362
                                               IF
363
                                                 { PUSH string "XTZ" ;
364
                                                   DUP 4 ;
365
                                                   COMPARE ;
366
                                                   EQ ;
367
                                                   IF
368
                                                     { DIG 2 ;
369
                                                       DIG 3 ;
370
                                                       DIG 5 ;
371
                                                       DROP 3 ;
372
                                                       PUSH mutez 1 ;
373
                                                       DIG 2 ;
374
                                                       MUL ;
375
                                                       DIG 2 ;
376
                                                       CONTRACT unit ;
377
                                                       IF_NONE
378
                                                         { PUSH nat 106 ; FAILWITH }
379
                                                         {} ;
380
                                                       SWAP ;
381
                                                       UNIT ;
382
                                                       TRANSFER_TOKENS ;
383
                                                       CONS }
384
                                                     { DIG 5 ;
385
                                                       GET 21 ;
386
                                                       DIG 3 ;
387
                                                       GET ;
388
                                                       IF_NONE
389
                                                         { PUSH nat 131 ; FAILWITH }
390
                                                         {} ;
391
                                                       PUSH string "fa1.2" ;
392
                                                       DUP 2 ;
393
                                                       GET 4 ;
394
                                                       COMPARE ;
395
                                                       EQ ;
396
                                                       IF
397
                                                         { GET 3 ;
398
                                                           CONTRACT %transfer (pair
399
                                                                                (address %from)
400
                                                                                (pair
401
                                                                                  (address %to)
402
                                                                                  (nat %value))) ;
403
                                                           IF_NONE
404
                                                             { PUSH nat 132 ; FAILWITH }
405
                                                             {} ;
406
                                                           PUSH mutez 0 ;
407
                                                           DIG 3 ;
408
                                                           DIG 5 ;
409
                                                           DIG 5 ;
410
                                                           PAIR 3 ;
411
                                                           TRANSFER_TOKENS ;
412
                                                           CONS }
413
                                                         { PUSH string "fa2" ;
414
                                                           DUP 2 ;
415
                                                           GET 4 ;
416
                                                           COMPARE ;
417
                                                           EQ ;
418
                                                           IF
419
                                                             { GET 3 ;
420
                                                               CONTRACT %transfer (list (pair
421
                                                                                         address
422
                                                                                         (list (pair
423
                                                                                                address
424
                                                                                                (pair
425
                                                                                                  nat
426
                                                                                                  nat))))) ;
427
                                                               IF_NONE
428
                                                                 { PUSH nat 101 ;
429
                                                                   FAILWITH }
430
                                                                 {} ;
431
                                                               NIL (pair address
432
                                                                         (list (pair
433
                                                                                address
434
                                                                                (pair
435
                                                                                  nat
436
                                                                                  nat)))) ;
437
                                                               NIL (pair address
438
                                                                         (pair nat nat)) ;
439
                                                               DIG 4 ;
440
                                                               PUSH nat 0 ;
441
                                                               DIG 7 ;
442
                                                               PAIR 3 ;
443
                                                               CONS ;
444
                                                               DIG 4 ;
445
                                                               PAIR ;
446
                                                               CONS ;
447
                                                               MAP { DUP ;
448
                                                                     CDR ;
449
                                                                     MAP { DUP ;
450
                                                                           GET 4 ;
451
                                                                           DUP 2 ;
452
                                                                           GET 3 ;
453
                                                                           PAIR ;
454
                                                                           SWAP ;
455
                                                                           CAR ;
456
                                                                           PAIR } ;
457
                                                                     SWAP ;
458
                                                                     CAR ;
459
                                                                     PAIR } ;
460
                                                               SWAP ;
461
                                                               PUSH mutez 0 ;
462
                                                               DIG 2 ;
463
                                                               TRANSFER_TOKENS ;
464
                                                               CONS }
465
                                                             { DROP 5 ;
466
                                                               PUSH nat 149 ;
467
                                                               FAILWITH } } } }
468
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
469
                                               DUP 10 ;
470
                                               DIG 9 ;
471
                                               GET 4 ;
472
                                               SENDER ;
473
                                               DUP 8 ;
474
                                               CDR ;
475
                                               DIG 5 ;
476
                                               DIG 5 ;
477
                                               PAIR 6 ;
478
                                               UNPAIR 6 ;
479
                                               PUSH nat 0 ;
480
                                               DUP 3 ;
481
                                               COMPARE ;
482
                                               GT ;
483
                                               IF
484
                                                 { PUSH string "XTZ" ;
485
                                                   DUP 4 ;
486
                                                   COMPARE ;
487
                                                   EQ ;
488
                                                   IF
489
                                                     { DIG 2 ;
490
                                                       DIG 3 ;
491
                                                       DIG 5 ;
492
                                                       DROP 3 ;
493
                                                       PUSH mutez 1 ;
494
                                                       DIG 2 ;
495
                                                       MUL ;
496
                                                       DIG 2 ;
497
                                                       CONTRACT unit ;
498
                                                       IF_NONE
499
                                                         { PUSH nat 106 ; FAILWITH }
500
                                                         {} ;
501
                                                       SWAP ;
502
                                                       UNIT ;
503
                                                       TRANSFER_TOKENS ;
504
                                                       CONS }
505
                                                     { DIG 5 ;
506
                                                       GET 21 ;
507
                                                       DIG 3 ;
508
                                                       GET ;
509
                                                       IF_NONE
510
                                                         { PUSH nat 131 ; FAILWITH }
511
                                                         {} ;
512
                                                       PUSH string "fa1.2" ;
513
                                                       DUP 2 ;
514
                                                       GET 4 ;
515
                                                       COMPARE ;
516
                                                       EQ ;
517
                                                       IF
518
                                                         { GET 3 ;
519
                                                           CONTRACT %transfer (pair
520
                                                                                (address %from)
521
                                                                                (pair
522
                                                                                  (address %to)
523
                                                                                  (nat %value))) ;
524
                                                           IF_NONE
525
                                                             { PUSH nat 132 ; FAILWITH }
526
                                                             {} ;
527
                                                           PUSH mutez 0 ;
528
                                                           DIG 3 ;
529
                                                           DIG 5 ;
530
                                                           DIG 5 ;
531
                                                           PAIR 3 ;
532
                                                           TRANSFER_TOKENS ;
533
                                                           CONS }
534
                                                         { PUSH string "fa2" ;
535
                                                           DUP 2 ;
536
                                                           GET 4 ;
537
                                                           COMPARE ;
538
                                                           EQ ;
539
                                                           IF
540
                                                             { GET 3 ;
541
                                                               CONTRACT %transfer (list (pair
542
                                                                                         address
543
                                                                                         (list (pair
544
                                                                                                address
545
                                                                                                (pair
546
                                                                                                  nat
547
                                                                                                  nat))))) ;
548
                                                               IF_NONE
549
                                                                 { PUSH nat 101 ;
550
                                                                   FAILWITH }
551
                                                                 {} ;
552
                                                               NIL (pair address
553
                                                                         (list (pair
554
                                                                                address
555
                                                                                (pair
556
                                                                                  nat
557
                                                                                  nat)))) ;
558
                                                               NIL (pair address
559
                                                                         (pair nat nat)) ;
560
                                                               DIG 4 ;
561
                                                               PUSH nat 0 ;
562
                                                               DIG 7 ;
563
                                                               PAIR 3 ;
564
                                                               CONS ;
565
                                                               DIG 4 ;
566
                                                               PAIR ;
567
                                                               CONS ;
568
                                                               MAP { DUP ;
569
                                                                     CDR ;
570
                                                                     MAP { DUP ;
571
                                                                           GET 4 ;
572
                                                                           DUP 2 ;
573
                                                                           GET 3 ;
574
                                                                           PAIR ;
575
                                                                           SWAP ;
576
                                                                           CAR ;
577
                                                                           PAIR } ;
578
                                                                     SWAP ;
579
                                                                     CAR ;
580
                                                                     PAIR } ;
581
                                                               SWAP ;
582
                                                               PUSH mutez 0 ;
583
                                                               DIG 2 ;
584
                                                               TRANSFER_TOKENS ;
585
                                                               CONS }
586
                                                             { DROP 5 ;
587
                                                               PUSH nat 149 ;
588
                                                               FAILWITH } } } }
589
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
590
                                               DUP 8 ;
591
                                               DUP 9 ;
592
                                               GET 3 ;
593
                                               SENDER ;
594
                                               DUP 7 ;
595
                                               CDR ;
596
                                               DIG 5 ;
597
                                               DIG 5 ;
598
                                               PAIR 6 ;
599
                                               UNPAIR 6 ;
600
                                               PUSH nat 0 ;
601
                                               DUP 3 ;
602
                                               COMPARE ;
603
                                               GT ;
604
                                               IF
605
                                                 { PUSH string "XTZ" ;
606
                                                   DUP 4 ;
607
                                                   COMPARE ;
608
                                                   EQ ;
609
                                                   IF
610
                                                     { DIG 2 ;
611
                                                       DIG 3 ;
612
                                                       DIG 5 ;
613
                                                       DROP 3 ;
614
                                                       PUSH mutez 1 ;
615
                                                       DIG 2 ;
616
                                                       MUL ;
617
                                                       DIG 2 ;
618
                                                       CONTRACT unit ;
619
                                                       IF_NONE
620
                                                         { PUSH nat 106 ; FAILWITH }
621
                                                         {} ;
622
                                                       SWAP ;
623
                                                       UNIT ;
624
                                                       TRANSFER_TOKENS ;
625
                                                       CONS }
626
                                                     { DIG 5 ;
627
                                                       GET 21 ;
628
                                                       DIG 3 ;
629
                                                       GET ;
630
                                                       IF_NONE
631
                                                         { PUSH nat 131 ; FAILWITH }
632
                                                         {} ;
633
                                                       PUSH string "fa1.2" ;
634
                                                       DUP 2 ;
635
                                                       GET 4 ;
636
                                                       COMPARE ;
637
                                                       EQ ;
638
                                                       IF
639
                                                         { GET 3 ;
640
                                                           CONTRACT %transfer (pair
641
                                                                                (address %from)
642
                                                                                (pair
643
                                                                                  (address %to)
644
                                                                                  (nat %value))) ;
645
                                                           IF_NONE
646
                                                             { PUSH nat 132 ; FAILWITH }
647
                                                             {} ;
648
                                                           PUSH mutez 0 ;
649
                                                           DIG 3 ;
650
                                                           DIG 5 ;
651
                                                           DIG 5 ;
652
                                                           PAIR 3 ;
653
                                                           TRANSFER_TOKENS ;
654
                                                           CONS }
655
                                                         { PUSH string "fa2" ;
656
                                                           DUP 2 ;
657
                                                           GET 4 ;
658
                                                           COMPARE ;
659
                                                           EQ ;
660
                                                           IF
661
                                                             { GET 3 ;
662
                                                               CONTRACT %transfer (list (pair
663
                                                                                         address
664
                                                                                         (list (pair
665
                                                                                                address
666
                                                                                                (pair
667
                                                                                                  nat
668
                                                                                                  nat))))) ;
669
                                                               IF_NONE
670
                                                                 { PUSH nat 101 ;
671
                                                                   FAILWITH }
672
                                                                 {} ;
673
                                                               NIL (pair address
674
                                                                         (list (pair
675
                                                                                address
676
                                                                                (pair
677
                                                                                  nat
678
                                                                                  nat)))) ;
679
                                                               NIL (pair address
680
                                                                         (pair nat nat)) ;
681
                                                               DIG 4 ;
682
                                                               PUSH nat 0 ;
683
                                                               DIG 7 ;
684
                                                               PAIR 3 ;
685
                                                               CONS ;
686
                                                               DIG 4 ;
687
                                                               PAIR ;
688
                                                               CONS ;
689
                                                               MAP { DUP ;
690
                                                                     CDR ;
691
                                                                     MAP { DUP ;
692
                                                                           GET 4 ;
693
                                                                           DUP 2 ;
694
                                                                           GET 3 ;
695
                                                                           PAIR ;
696
                                                                           SWAP ;
697
                                                                           CAR ;
698
                                                                           PAIR } ;
699
                                                                     SWAP ;
700
                                                                     CAR ;
701
                                                                     PAIR } ;
702
                                                               SWAP ;
703
                                                               PUSH mutez 0 ;
704
                                                               DIG 2 ;
705
                                                               TRANSFER_TOKENS ;
706
                                                               CONS }
707
                                                             { DROP 5 ;
708
                                                               PUSH nat 149 ;
709
                                                               FAILWITH } } } }
710
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
711
                                               DUP 7 ;
712
                                               DUP 8 ;
713
                                               GET 29 ;
714
                                               SENDER ;
715
                                               DIG 5 ;
716
                                               CDR ;
717
                                               DIG 5 ;
718
                                               DIG 5 ;
719
                                               PAIR 6 ;
720
                                               UNPAIR 6 ;
721
                                               PUSH nat 0 ;
722
                                               DUP 3 ;
723
                                               COMPARE ;
724
                                               GT ;
725
                                               IF
726
                                                 { PUSH string "XTZ" ;
727
                                                   DUP 4 ;
728
                                                   COMPARE ;
729
                                                   EQ ;
730
                                                   IF
731
                                                     { DIG 2 ;
732
                                                       DIG 3 ;
733
                                                       DIG 5 ;
734
                                                       DROP 3 ;
735
                                                       PUSH mutez 1 ;
736
                                                       DIG 2 ;
737
                                                       MUL ;
738
                                                       DIG 2 ;
739
                                                       CONTRACT unit ;
740
                                                       IF_NONE
741
                                                         { PUSH nat 106 ; FAILWITH }
742
                                                         {} ;
743
                                                       SWAP ;
744
                                                       UNIT ;
745
                                                       TRANSFER_TOKENS ;
746
                                                       CONS }
747
                                                     { DIG 5 ;
748
                                                       GET 21 ;
749
                                                       DIG 3 ;
750
                                                       GET ;
751
                                                       IF_NONE
752
                                                         { PUSH nat 131 ; FAILWITH }
753
                                                         {} ;
754
                                                       PUSH string "fa1.2" ;
755
                                                       DUP 2 ;
756
                                                       GET 4 ;
757
                                                       COMPARE ;
758
                                                       EQ ;
759
                                                       IF
760
                                                         { GET 3 ;
761
                                                           CONTRACT %transfer (pair
762
                                                                                (address %from)
763
                                                                                (pair
764
                                                                                  (address %to)
765
                                                                                  (nat %value))) ;
766
                                                           IF_NONE
767
                                                             { PUSH nat 132 ; FAILWITH }
768
                                                             {} ;
769
                                                           PUSH mutez 0 ;
770
                                                           DIG 3 ;
771
                                                           DIG 5 ;
772
                                                           DIG 5 ;
773
                                                           PAIR 3 ;
774
                                                           TRANSFER_TOKENS ;
775
                                                           CONS }
776
                                                         { PUSH string "fa2" ;
777
                                                           DUP 2 ;
778
                                                           GET 4 ;
779
                                                           COMPARE ;
780
                                                           EQ ;
781
                                                           IF
782
                                                             { GET 3 ;
783
                                                               CONTRACT %transfer (list (pair
784
                                                                                         address
785
                                                                                         (list (pair
786
                                                                                                address
787
                                                                                                (pair
788
                                                                                                  nat
789
                                                                                                  nat))))) ;
790
                                                               IF_NONE
791
                                                                 { PUSH nat 101 ;
792
                                                                   FAILWITH }
793
                                                                 {} ;
794
                                                               NIL (pair address
795
                                                                         (list (pair
796
                                                                                address
797
                                                                                (pair
798
                                                                                  nat
799
                                                                                  nat)))) ;
800
                                                               NIL (pair address
801
                                                                         (pair nat nat)) ;
802
                                                               DIG 4 ;
803
                                                               PUSH nat 0 ;
804
                                                               DIG 7 ;
805
                                                               PAIR 3 ;
806
                                                               CONS ;
807
                                                               DIG 4 ;
808
                                                               PAIR ;
809
                                                               CONS ;
810
                                                               MAP { DUP ;
811
                                                                     CDR ;
812
                                                                     MAP { DUP ;
813
                                                                           GET 4 ;
814
                                                                           DUP 2 ;
815
                                                                           GET 3 ;
816
                                                                           PAIR ;
817
                                                                           SWAP ;
818
                                                                           CAR ;
819
                                                                           PAIR } ;
820
                                                                     SWAP ;
821
                                                                     CAR ;
822
                                                                     PAIR } ;
823
                                                               SWAP ;
824
                                                               PUSH mutez 0 ;
825
                                                               DIG 2 ;
826
                                                               TRANSFER_TOKENS ;
827
                                                               CONS }
828
                                                             { DROP 5 ;
829
                                                               PUSH nat 149 ;
830
                                                               FAILWITH } } } }
831
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
832
                                               DUP 5 ;
833
                                               DIG 3 ;
834
                                               UPDATE 13 ;
835
                                               DIG 2 ;
836
                                               UPDATE 9 ;
837
                                               DUP 4 ;
838
                                               GET 7 ;
839
                                               DUP 4 ;
840
                                               GET ;
841
                                               IF_NONE
842
                                                 { DIG 2 ; DROP ; DIG 2 ; GET 7 }
843
                                                 { DROP ; DIG 3 ; GET 7 ; NONE nat ; DIG 4 ; UPDATE } ;
844
                                               UPDATE 7 ;
845
                                               SWAP ;
846
                                               PAIR } } } } } }
847
                         { DUP 2 ;
848
                           GET 19 ;
849
                           IF
850
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
851
                             { DUP ;
852
                               GET 3 ;
853
                               DUP 2 ;
854
                               CAR ;
855
                               SENDER ;
856
                               DUP 4 ;
857
                               GET 4 ;
858
                               DUP 4 ;
859
                               DUP 4 ;
860
                               PAIR 3 ;
861
                               DUP 5 ;
862
                               GET 4 ;
863
                               DUP 6 ;
864
                               GET 3 ;
865
                               PAIR ;
866
                               DUP 7 ;
867
                               GET 13 ;
868
                               DUP 3 ;
869
                               GET ;
870
                               IF_NONE { PUSH nat 113 ; FAILWITH } {} ;
871
                               DUP ;
872
                               GET 3 ;
873
                               NOW ;
874
                               COMPARE ;
875
                               LT ;
876
                               IF
877
                                 { DROP 8 ; PUSH nat 111 ; FAILWITH }
878
                                 { DUP ;
879
                                   GET 5 ;
880
                                   NOW ;
881
                                   COMPARE ;
882
                                   GT ;
883
                                   IF
884
                                     { DROP 8 ; PUSH nat 112 ; FAILWITH }
885
                                     { PUSH nat 10000 ;
886
                                       DUP 9 ;
887
                                       GET 17 ;
888
                                       DUP 3 ;
889
                                       CAR ;
890
                                       MUL ;
891
                                       EDIV ;
892
                                       IF_NONE
893
                                         { PUSH string "DIV by 0" ; FAILWITH }
894
                                         {} ;
895
                                       CAR ;
896
                                       PUSH nat 10000 ;
897
                                       DUP 3 ;
898
                                       CAR ;
899
                                       DUP 11 ;
900
                                       GET 15 ;
901
                                       MUL ;
902
                                       EDIV ;
903
                                       IF_NONE
904
                                         { PUSH string "DIV by 0" ; FAILWITH }
905
                                         {} ;
906
                                       CAR ;
907
                                       DUP ;
908
                                       DUP 3 ;
909
                                       ADD ;
910
                                       DUP 4 ;
911
                                       CAR ;
912
                                       SUB ;
913
                                       ISNAT ;
914
                                       IF_NONE { PUSH nat 105 ; FAILWITH } {} ;
915
                                       DUP 11 ;
916
                                       GET 7 ;
917
                                       DUP 6 ;
918
                                       GET ;
919
                                       IF_NONE
920
                                         { DIG 4 ;
921
                                           DROP ;
922
                                           DUP 10 ;
923
                                           GET 7 ;
924
                                           DUP 11 ;
925
                                           GET 11 ;
926
                                           NIL (pair address
927
                                                     (list (pair address (pair nat nat)))) ;
928
                                           NIL (pair address (pair nat nat)) ;
929
                                           PUSH nat 1 ;
930
                                           DIG 12 ;
931
                                           DIG 12 ;
932
                                           PAIR 3 ;
933
                                           CONS ;
934
                                           DUP 10 ;
935
                                           PAIR ;
936
                                           CONS ;
937
                                           PAIR ;
938
                                           PAIR }
939
                                         { DUP 12 ;
940
                                           GET 11 ;
941
                                           DUP 2 ;
942
                                           GET ;
943
                                           IF_NONE { PUSH nat 103 ; FAILWITH } {} ;
944
                                           CAR ;
945
                                           DUP 9 ;
946
                                           COMPARE ;
947
                                           NEQ ;
948
                                           IF
949
                                             { DIG 5 ;
950
                                               DIG 8 ;
951
                                               DIG 9 ;
952
                                               DROP 4 ;
953
                                               PUSH nat 125 ;
954
                                               FAILWITH }
955
                                             { DUP 12 ;
956
                                               GET 7 ;
957
                                               NONE nat ;
958
                                               DIG 7 ;
959
                                               UPDATE ;
960
                                               DUP 12 ;
961
                                               GET 11 ;
962
                                               NONE (pair address
963
                                                          (pair nat
964
                                                                (pair address
965
                                                                      (pair bool
966
                                                                            (pair bool
967
                                                                                  (pair
968
                                                                                    nat
969
                                                                                    (pair
970
                                                                                      nat
971
                                                                                      (pair
972
                                                                                        timestamp
973
                                                                                        (pair
974
                                                                                          int
975
                                                                                          (pair
976
                                                                                            timestamp
977
                                                                                            (pair
978
                                                                                              address
979
                                                                                              (pair
980
                                                                                                string
981
                                                                                                (pair
982
                                                                                                  (set string)
983
                                                                                                  bool))))))))))))) ;
984
                                               DIG 3 ;
985
                                               UPDATE ;
986
                                               NIL (pair address
987
                                                         (list (pair address
988
                                                                    (pair nat nat)))) ;
989
                                               NIL (pair address (pair nat nat)) ;
990
                                               PUSH nat 1 ;
991
                                               DIG 12 ;
992
                                               DIG 12 ;
993
                                               PAIR 3 ;
994
                                               CONS ;
995
                                               SELF_ADDRESS ;
996
                                               PAIR ;
997
                                               CONS ;
998
                                               PAIR ;
999
                                               PAIR } } ;
1000
                                       UNPAIR ;
1001
                                       UNPAIR ;
1002
                                       NIL operation ;
1003
                                       DIG 10 ;
1004
                                       GET 4 ;
1005
                                       CONTRACT %transfer (list (pair address
1006
                                                                     (list (pair address
1007
                                                                                (pair
1008
                                                                                  nat
1009
                                                                                  nat))))) ;
1010
                                       IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
1011
                                       DIG 2 ;
1012
                                       MAP { DUP ;
1013
                                             CDR ;
1014
                                             MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ;
1015
                                             SWAP ;
1016
                                             CAR ;
1017
                                             PAIR } ;
1018
                                       SWAP ;
1019
                                       PUSH mutez 0 ;
1020
                                       DIG 2 ;
1021
                                       TRANSFER_TOKENS ;
1022
                                       CONS ;
1023
                                       DUP 10 ;
1024
                                       DIG 9 ;
1025
                                       SELF_ADDRESS ;
1026
                                       DUP 10 ;
1027
                                       GET 6 ;
1028
                                       DIG 7 ;
1029
                                       DIG 5 ;
1030
                                       PAIR 6 ;
1031
                                       UNPAIR 6 ;
1032
                                       PUSH nat 0 ;
1033
                                       DUP 3 ;
1034
                                       COMPARE ;
1035
                                       GT ;
1036
                                       IF
1037
                                         { PUSH string "XTZ" ;
1038
                                           DUP 4 ;
1039
                                           COMPARE ;
1040
                                           EQ ;
1041
                                           IF
1042
                                             { DIG 2 ;
1043
                                               DIG 3 ;
1044
                                               DIG 5 ;
1045
                                               DROP 3 ;
1046
                                               PUSH mutez 1 ;
1047
                                               DIG 2 ;
1048
                                               MUL ;
1049
                                               DIG 2 ;
1050
                                               CONTRACT unit ;
1051
                                               IF_NONE { PUSH nat 106 ; FAILWITH } {} ;
1052
                                               SWAP ;
1053
                                               UNIT ;
1054
                                               TRANSFER_TOKENS ;
1055
                                               CONS }
1056
                                             { DIG 5 ;
1057
                                               GET 21 ;
1058
                                               DIG 3 ;
1059
                                               GET ;
1060
                                               IF_NONE { PUSH nat 131 ; FAILWITH } {} ;
1061
                                               PUSH string "fa1.2" ;
1062
                                               DUP 2 ;
1063
                                               GET 4 ;
1064
                                               COMPARE ;
1065
                                               EQ ;
1066
                                               IF
1067
                                                 { GET 3 ;
1068
                                                   CONTRACT %transfer (pair
1069
                                                                        (address %from)
1070
                                                                        (pair
1071
                                                                          (address %to)
1072
                                                                          (nat %value))) ;
1073
                                                   IF_NONE
1074
                                                     { PUSH nat 132 ; FAILWITH }
1075
                                                     {} ;
1076
                                                   PUSH mutez 0 ;
1077
                                                   DIG 3 ;
1078
                                                   DIG 5 ;
1079
                                                   DIG 5 ;
1080
                                                   PAIR 3 ;
1081
                                                   TRANSFER_TOKENS ;
1082
                                                   CONS }
1083
                                                 { PUSH string "fa2" ;
1084
                                                   DUP 2 ;
1085
                                                   GET 4 ;
1086
                                                   COMPARE ;
1087
                                                   EQ ;
1088
                                                   IF
1089
                                                     { GET 3 ;
1090
                                                       CONTRACT %transfer (list (pair
1091
                                                                                 address
1092
                                                                                 (list (pair
1093
                                                                                        address
1094
                                                                                        (pair
1095
                                                                                          nat
1096
                                                                                          nat))))) ;
1097
                                                       IF_NONE
1098
                                                         { PUSH nat 101 ; FAILWITH }
1099
                                                         {} ;
1100
                                                       NIL (pair address
1101
                                                                 (list (pair address
1102
                                                                            (pair nat
1103
                                                                                  nat)))) ;
1104
                                                       NIL (pair address (pair nat nat)) ;
1105
                                                       DIG 4 ;
1106
                                                       PUSH nat 0 ;
1107
                                                       DIG 7 ;
1108
                                                       PAIR 3 ;
1109
                                                       CONS ;
1110
                                                       DIG 4 ;
1111
                                                       PAIR ;
1112
                                                       CONS ;
1113
                                                       MAP { DUP ;
1114
                                                             CDR ;
1115
                                                             MAP { DUP ;
1116
                                                                   GET 4 ;
1117
                                                                   DUP 2 ;
1118
                                                                   GET 3 ;
1119
                                                                   PAIR ;
1120
                                                                   SWAP ;
1121
                                                                   CAR ;
1122
                                                                   PAIR } ;
1123
                                                             SWAP ;
1124
                                                             CAR ;
1125
                                                             PAIR } ;
1126
                                                       SWAP ;
1127
                                                       PUSH mutez 0 ;
1128
                                                       DIG 2 ;
1129
                                                       TRANSFER_TOKENS ;
1130
                                                       CONS }
1131
                                                     { DROP 5 ; PUSH nat 149 ; FAILWITH } } } }
1132
                                         { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
1133
                                       DUP 8 ;
1134
                                       DUP 9 ;
1135
                                       GET 3 ;
1136
                                       SELF_ADDRESS ;
1137
                                       DUP 9 ;
1138
                                       GET 6 ;
1139
                                       DIG 7 ;
1140
                                       DIG 5 ;
1141
                                       PAIR 6 ;
1142
                                       UNPAIR 6 ;
1143
                                       PUSH nat 0 ;
1144
                                       DUP 3 ;
1145
                                       COMPARE ;
1146
                                       GT ;
1147
                                       IF
1148
                                         { PUSH string "XTZ" ;
1149
                                           DUP 4 ;
1150
                                           COMPARE ;
1151
                                           EQ ;
1152
                                           IF
1153
                                             { DIG 2 ;
1154
                                               DIG 3 ;
1155
                                               DIG 5 ;
1156
                                               DROP 3 ;
1157
                                               PUSH mutez 1 ;
1158
                                               DIG 2 ;
1159
                                               MUL ;
1160
                                               DIG 2 ;
1161
                                               CONTRACT unit ;
1162
                                               IF_NONE { PUSH nat 106 ; FAILWITH } {} ;
1163
                                               SWAP ;
1164
                                               UNIT ;
1165
                                               TRANSFER_TOKENS ;
1166
                                               CONS }
1167
                                             { DIG 5 ;
1168
                                               GET 21 ;
1169
                                               DIG 3 ;
1170
                                               GET ;
1171
                                               IF_NONE { PUSH nat 131 ; FAILWITH } {} ;
1172
                                               PUSH string "fa1.2" ;
1173
                                               DUP 2 ;
1174
                                               GET 4 ;
1175
                                               COMPARE ;
1176
                                               EQ ;
1177
                                               IF
1178
                                                 { GET 3 ;
1179
                                                   CONTRACT %transfer (pair
1180
                                                                        (address %from)
1181
                                                                        (pair
1182
                                                                          (address %to)
1183
                                                                          (nat %value))) ;
1184
                                                   IF_NONE
1185
                                                     { PUSH nat 132 ; FAILWITH }
1186
                                                     {} ;
1187
                                                   PUSH mutez 0 ;
1188
                                                   DIG 3 ;
1189
                                                   DIG 5 ;
1190
                                                   DIG 5 ;
1191
                                                   PAIR 3 ;
1192
                                                   TRANSFER_TOKENS ;
1193
                                                   CONS }
1194
                                                 { PUSH string "fa2" ;
1195
                                                   DUP 2 ;
1196
                                                   GET 4 ;
1197
                                                   COMPARE ;
1198
                                                   EQ ;
1199
                                                   IF
1200
                                                     { GET 3 ;
1201
                                                       CONTRACT %transfer (list (pair
1202
                                                                                 address
1203
                                                                                 (list (pair
1204
                                                                                        address
1205
                                                                                        (pair
1206
                                                                                          nat
1207
                                                                                          nat))))) ;
1208
                                                       IF_NONE
1209
                                                         { PUSH nat 101 ; FAILWITH }
1210
                                                         {} ;
1211
                                                       NIL (pair address
1212
                                                                 (list (pair address
1213
                                                                            (pair nat
1214
                                                                                  nat)))) ;
1215
                                                       NIL (pair address (pair nat nat)) ;
1216
                                                       DIG 4 ;
1217
                                                       PUSH nat 0 ;
1218
                                                       DIG 7 ;
1219
                                                       PAIR 3 ;
1220
                                                       CONS ;
1221
                                                       DIG 4 ;
1222
                                                       PAIR ;
1223
                                                       CONS ;
1224
                                                       MAP { DUP ;
1225
                                                             CDR ;
1226
                                                             MAP { DUP ;
1227
                                                                   GET 4 ;
1228
                                                                   DUP 2 ;
1229
                                                                   GET 3 ;
1230
                                                                   PAIR ;
1231
                                                                   SWAP ;
1232
                                                                   CAR ;
1233
                                                                   PAIR } ;
1234
                                                             SWAP ;
1235
                                                             CAR ;
1236
                                                             PAIR } ;
1237
                                                       SWAP ;
1238
                                                       PUSH mutez 0 ;
1239
                                                       DIG 2 ;
1240
                                                       TRANSFER_TOKENS ;
1241
                                                       CONS }
1242
                                                     { DROP 5 ; PUSH nat 149 ; FAILWITH } } } }
1243
                                         { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
1244
                                       DUP 7 ;
1245
                                       DUP 8 ;
1246
                                       GET 29 ;
1247
                                       SELF_ADDRESS ;
1248
                                       DIG 7 ;
1249
                                       GET 6 ;
1250
                                       DIG 7 ;
1251
                                       DIG 5 ;
1252
                                       PAIR 6 ;
1253
                                       UNPAIR 6 ;
1254
                                       PUSH nat 0 ;
1255
                                       DUP 3 ;
1256
                                       COMPARE ;
1257
                                       GT ;
1258
                                       IF
1259
                                         { PUSH string "XTZ" ;
1260
                                           DUP 4 ;
1261
                                           COMPARE ;
1262
                                           EQ ;
1263
                                           IF
1264
                                             { DIG 2 ;
1265
                                               DIG 3 ;
1266
                                               DIG 5 ;
1267
                                               DROP 3 ;
1268
                                               PUSH mutez 1 ;
1269
                                               DIG 2 ;
1270
                                               MUL ;
1271
                                               DIG 2 ;
1272
                                               CONTRACT unit ;
1273
                                               IF_NONE { PUSH nat 106 ; FAILWITH } {} ;
1274
                                               SWAP ;
1275
                                               UNIT ;
1276
                                               TRANSFER_TOKENS ;
1277
                                               CONS }
1278
                                             { DIG 5 ;
1279
                                               GET 21 ;
1280
                                               DIG 3 ;
1281
                                               GET ;
1282
                                               IF_NONE { PUSH nat 131 ; FAILWITH } {} ;
1283
                                               PUSH string "fa1.2" ;
1284
                                               DUP 2 ;
1285
                                               GET 4 ;
1286
                                               COMPARE ;
1287
                                               EQ ;
1288
                                               IF
1289
                                                 { GET 3 ;
1290
                                                   CONTRACT %transfer (pair
1291
                                                                        (address %from)
1292
                                                                        (pair
1293
                                                                          (address %to)
1294
                                                                          (nat %value))) ;
1295
                                                   IF_NONE
1296
                                                     { PUSH nat 132 ; FAILWITH }
1297
                                                     {} ;
1298
                                                   PUSH mutez 0 ;
1299
                                                   DIG 3 ;
1300
                                                   DIG 5 ;
1301
                                                   DIG 5 ;
1302
                                                   PAIR 3 ;
1303
                                                   TRANSFER_TOKENS ;
1304
                                                   CONS }
1305
                                                 { PUSH string "fa2" ;
1306
                                                   DUP 2 ;
1307
                                                   GET 4 ;
1308
                                                   COMPARE ;
1309
                                                   EQ ;
1310
                                                   IF
1311
                                                     { GET 3 ;
1312
                                                       CONTRACT %transfer (list (pair
1313
                                                                                 address
1314
                                                                                 (list (pair
1315
                                                                                        address
1316
                                                                                        (pair
1317
                                                                                          nat
1318
                                                                                          nat))))) ;
1319
                                                       IF_NONE
1320
                                                         { PUSH nat 101 ; FAILWITH }
1321
                                                         {} ;
1322
                                                       NIL (pair address
1323
                                                                 (list (pair address
1324
                                                                            (pair nat
1325
                                                                                  nat)))) ;
1326
                                                       NIL (pair address (pair nat nat)) ;
1327
                                                       DIG 4 ;
1328
                                                       PUSH nat 0 ;
1329
                                                       DIG 7 ;
1330
                                                       PAIR 3 ;
1331
                                                       CONS ;
1332
                                                       DIG 4 ;
1333
                                                       PAIR ;
1334
                                                       CONS ;
1335
                                                       MAP { DUP ;
1336
                                                             CDR ;
1337
                                                             MAP { DUP ;
1338
                                                                   GET 4 ;
1339
                                                                   DUP 2 ;
1340
                                                                   GET 3 ;
1341
                                                                   PAIR ;
1342
                                                                   SWAP ;
1343
                                                                   CAR ;
1344
                                                                   PAIR } ;
1345
                                                             SWAP ;
1346
                                                             CAR ;
1347
                                                             PAIR } ;
1348
                                                       SWAP ;
1349
                                                       PUSH mutez 0 ;
1350
                                                       DIG 2 ;
1351
                                                       TRANSFER_TOKENS ;
1352
                                                       CONS }
1353
                                                     { DROP 5 ; PUSH nat 149 ; FAILWITH } } } }
1354
                                         { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
1355
                                       DUP 5 ;
1356
                                       DIG 5 ;
1357
                                       GET 13 ;
1358
                                       NONE (pair nat
1359
                                                  (pair timestamp
1360
                                                        (pair timestamp string))) ;
1361
                                       DIG 6 ;
1362
                                       UPDATE ;
1363
                                       UPDATE 13 ;
1364
                                       DIG 2 ;
1365
                                       UPDATE 11 ;
1366
                                       DIG 2 ;
1367
                                       UPDATE 7 ;
1368
                                       SWAP ;
1369
                                       PAIR } } } } }
1370
                     { IF_LEFT
1371
                         { DUP 2 ;
1372
                           GET 27 ;
1373
                           SENDER ;
1374
                           COMPARE ;
1375
                           NEQ ;
1376
                           IF
1377
                             { SELF_ADDRESS ;
1378
                               DUP 3 ;
1379
                               DIG 3 ;
1380
                               GET 27 ;
1381
                               CONTRACT %callMultisig (pair
1382
                                                        (pair %entrypoint_signature
1383
                                                          (string %name)
1384
                                                          (pair (bytes %params)
1385
                                                                (address %source_contract)))
1386
                                                        (lambda %callback unit
1387
                                                                          (list operation))) ;
1388
                               IF_NONE
1389
                                 { SWAP ;
1390
                                   DIG 2 ;
1391
                                   DROP 2 ;
1392
                                   PUSH string "no call entrypoint" ;
1393
                                   FAILWITH }
1394
                                 { DUP 4 ;
1395
                                   PACK ;
1396
                                   SHA256 ;
1397
                                   SELF_ADDRESS ;
1398
                                   SWAP ;
1399
                                   PUSH string "addCollection" ;
1400
                                   PAIR 3 ;
1401
                                   SWAP ;
1402
                                   PUSH mutez 0 ;
1403
                                   LAMBDA
1404
                                     (pair (pair address address) unit)
1405
                                     (list operation)
1406
                                     { UNPAIR ;
1407
                                       UNPAIR ;
1408
                                       DIG 2 ;
1409
                                       DROP ;
1410
                                       CONTRACT %addCollection address ;
1411
                                       IF_NONE
1412
                                         { DROP ;
1413
                                           PUSH string "no addCollection entrypoint" ;
1414
                                           FAILWITH }
1415
                                         { NIL operation ;
1416
                                           SWAP ;
1417
                                           PUSH mutez 0 ;
1418
                                           DIG 3 ;
1419
                                           TRANSFER_TOKENS ;
1420
                                           CONS } } ;
1421
                                   DUP 7 ;
1422
                                   DUP 7 ;
1423
                                   PAIR ;
1424
                                   APPLY ;
1425
                                   DIG 5 ;
1426
                                   DIG 6 ;
1427
                                   DROP 2 ;
1428
                                   DIG 3 ;
1429
                                   PAIR ;
1430
                                   TRANSFER_TOKENS ;
1431
                                   NIL operation ;
1432
                                   SWAP ;
1433
                                   CONS } }
1434
                             { DUP 2 ;
1435
                               DIG 2 ;
1436
                               CAR ;
1437
                               DIG 2 ;
1438
                               PUSH bool True ;
1439
                               SWAP ;
1440
                               UPDATE ;
1441
                               UPDATE 1 ;
1442
                               NIL operation } ;
1443
                           PAIR }
1444
                         { DUP 2 ;
1445
                           GET 19 ;
1446
                           IF
1447
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
1448
                             { DUP 2 ;
1449
                               CAR ;
1450
                               DUP 2 ;
1451
                               GET 5 ;
1452
                               MEM ;
1453
                               NOT ;
1454
                               IF
1455
                                 { DROP 2 ; PUSH nat 152 ; FAILWITH }
1456
                                 { PUSH string "DOGA" ;
1457
                                   DUP 2 ;
1458
                                   GET 15 ;
1459
                                   COMPARE ;
1460
                                   NEQ ;
1461
                                   PUSH string "XTZ" ;
1462
                                   DUP 3 ;
1463
                                   GET 15 ;
1464
                                   COMPARE ;
1465
                                   NEQ ;
1466
                                   AND ;
1467
                                   DUP 2 ;
1468
                                   GET 18 ;
1469
                                   NOT ;
1470
                                   AND ;
1471
                                   IF
1472
                                     { DROP 2 ; PUSH nat 148 ; FAILWITH }
1473
                                     { PUSH mutez 0 ;
1474
                                       AMOUNT ;
1475
                                       COMPARE ;
1476
                                       NEQ ;
1477
                                       PUSH string "XTZ" ;
1478
                                       DUP 3 ;
1479
                                       GET 15 ;
1480
                                       COMPARE ;
1481
                                       NEQ ;
1482
                                       AND ;
1483
                                       IF
1484
                                         { DROP 2 ; PUSH nat 133 ; FAILWITH }
1485
                                         { DUP ;
1486
                                           GET 5 ;
1487
                                           DUP 2 ;
1488
                                           GET 3 ;
1489
                                           PAIR ;
1490
                                           DUP 3 ;
1491
                                           GET 7 ;
1492
                                           DUP 2 ;
1493
                                           GET ;
1494
                                           IF_NONE
1495
                                             { DUP 3 ; GET 5 }
1496
                                             { DROP ; PUSH nat 118 ; FAILWITH } ;
1497
                                           DUP 3 ;
1498
                                           GET 11 ;
1499
                                           DUP 4 ;
1500
                                           GET 9 ;
1501
                                           COMPARE ;
1502
                                           GE ;
1503
                                           IF
1504
                                             { DROP 4 ; PUSH nat 120 ; FAILWITH }
1505
                                             { DUP 3 ;
1506
                                               GET 17 ;
1507
                                               ITER { PUSH nat 134 ;
1508
                                                      DUP 6 ;
1509
                                                      GET 21 ;
1510
                                                      DIG 2 ;
1511
                                                      MEM ;
1512
                                                      NOT ;
1513
                                                      IF { FAILWITH } { DROP } } ;
1514
                                               DUP 4 ;
1515
                                               GET 21 ;
1516
                                               DUP 4 ;
1517
                                               GET 15 ;
1518
                                               GET ;
1519
                                               IF_NONE
1520
                                                 { PUSH nat 131 ; FAILWITH }
1521
                                                 { CAR } ;
1522
                                               DUP 4 ;
1523
                                               CAR ;
1524
                                               IF_LEFT
1525
                                                 { DUP 5 ;
1526
                                                   GET 9 ;
1527
                                                   DUP 6 ;
1528
                                                   GET 11 ;
1529
                                                   SUB ;
1530
                                                   DUP 2 ;
1531
                                                   CDR ;
1532
                                                   INT ;
1533
                                                   COMPARE ;
1534
                                                   GT ;
1535
                                                   IF
1536
                                                     { DROP ; PUSH nat 127 ; FAILWITH }
1537
                                                     { PUSH bool True ;
1538
                                                       DUP 2 ;
1539
                                                       CDR ;
1540
                                                       INT ;
1541
                                                       DIG 2 ;
1542
                                                       CAR ;
1543
                                                       PAIR ;
1544
                                                       PAIR } }
1545
                                                 { DROP ;
1546
                                                   PUSH bool False ;
1547
                                                   PUSH int 0 ;
1548
                                                   DUP 6 ;
1549
                                                   GET 7 ;
1550
                                                   PAIR ;
1551
                                                   PAIR } ;
1552
                                               UNPAIR ;
1553
                                               UNPAIR ;
1554
                                               DUP 7 ;
1555
                                               GET 13 ;
1556
                                               IF_LEFT
1557
                                                 { DROP ; PUSH bool False ; SELF_ADDRESS }
1558
                                                 { PUSH bool True ; SWAP } ;
1559
                                               NIL (pair address
1560
                                                         (list (pair address
1561
                                                                    (pair nat nat)))) ;
1562
                                               NIL (pair address (pair nat nat)) ;
1563
                                               PUSH nat 1 ;
1564
                                               DUP 12 ;
1565
                                               GET 3 ;
1566
                                               SELF_ADDRESS ;
1567
                                               PAIR 3 ;
1568
                                               CONS ;
1569
                                               SENDER ;
1570
                                               PAIR ;
1571
                                               CONS ;
1572
                                               DUP 10 ;
1573
                                               GET 5 ;
1574
                                               CONTRACT %transfer (list (pair address
1575
                                                                             (list (pair
1576
                                                                                    address
1577
                                                                                    (pair
1578
                                                                                      nat
1579
                                                                                      nat))))) ;
1580
                                               IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
1581
                                               SWAP ;
1582
                                               MAP { DUP ;
1583
                                                     CDR ;
1584
                                                     MAP { DUP ;
1585
                                                           GET 4 ;
1586
                                                           DUP 2 ;
1587
                                                           GET 3 ;
1588
                                                           PAIR ;
1589
                                                           SWAP ;
1590
                                                           CAR ;
1591
                                                           PAIR } ;
1592
                                                     SWAP ;
1593
                                                     CAR ;
1594
                                                     PAIR } ;
1595
                                               SWAP ;
1596
                                               PUSH mutez 0 ;
1597
                                               DIG 2 ;
1598
                                               TRANSFER_TOKENS ;
1599
                                               DUP 11 ;
1600
                                               GET 11 ;
1601
                                               DUP 11 ;
1602
                                               GET 18 ;
1603
                                               DUP 12 ;
1604
                                               GET 18 ;
1605
                                               NOT ;
1606
                                               IF
1607
                                                 { EMPTY_SET string ;
1608
                                                   DUP 10 ;
1609
                                                   PUSH bool True ;
1610
                                                   SWAP ;
1611
                                                   UPDATE }
1612
                                                 { DUP 12 ; GET 17 } ;
1613
                                               DIG 9 ;
1614
                                               DIG 5 ;
1615
                                               DUP 13 ;
1616
                                               GET 11 ;
1617
                                               DIG 9 ;
1618
                                               DUP 14 ;
1619
                                               GET 9 ;
1620
                                               DUP 15 ;
1621
                                               GET 7 ;
1622
                                               DIG 11 ;
1623
                                               DIG 11 ;
1624
                                               DIG 12 ;
1625
                                               DUP 16 ;
1626
                                               GET 5 ;
1627
                                               DIG 16 ;
1628
                                               GET 3 ;
1629
                                               SENDER ;
1630
                                               PAIR 14 ;
1631
                                               SOME ;
1632
                                               DUP 4 ;
1633
                                               PAIR 3 ;
1634
                                               DUP 5 ;
1635
                                               PUSH nat 1 ;
1636
                                               DUP 7 ;
1637
                                               GET 5 ;
1638
                                               ADD ;
1639
                                               UPDATE 5 ;
1640
                                               SWAP ;
1641
                                               UNPAIR 3 ;
1642
                                               UPDATE ;
1643
                                               UPDATE 11 ;
1644
                                               DIG 4 ;
1645
                                               GET 7 ;
1646
                                               DIG 3 ;
1647
                                               SOME ;
1648
                                               DIG 4 ;
1649
                                               UPDATE ;
1650
                                               UPDATE 7 ;
1651
                                               NIL operation ;
1652
                                               DIG 2 ;
1653
                                               CONS ;
1654
                                               PAIR } } } } } } } }
1655
                 { IF_LEFT
1656
                     { IF_LEFT
1657
                         { DUP 2 ;
1658
                           GET 19 ;
1659
                           IF
1660
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
1661
                             { PUSH mutez 0 ;
1662
                               AMOUNT ;
1663
                               COMPARE ;
1664
                               NEQ ;
1665
                               PUSH string "XTZ" ;
1666
                               DUP 3 ;
1667
                               GET 3 ;
1668
                               COMPARE ;
1669
                               NEQ ;
1670
                               AND ;
1671
                               IF
1672
                                 { DROP 2 ; PUSH nat 133 ; FAILWITH }
1673
                                 { DUP 2 ;
1674
                                   GET 11 ;
1675
                                   DUP 2 ;
1676
                                   CAR ;
1677
                                   GET ;
1678
                                   IF_NONE { PUSH nat 103 ; FAILWITH } {} ;
1679
                                   DUP ;
1680
                                   GET 5 ;
1681
                                   DUP 2 ;
1682
                                   GET 3 ;
1683
                                   PAIR ;
1684
                                   DUP 2 ;
1685
                                   GET 21 ;
1686
                                   DUP 4 ;
1687
                                   GET 6 ;
1688
                                   COMPARE ;
1689
                                   NEQ ;
1690
                                   DUP 3 ;
1691
                                   GET 9 ;
1692
                                   AND ;
1693
                                   IF { PUSH nat 128 ; FAILWITH } { DUP 3 ; GET 6 } ;
1694
                                   DUP 3 ;
1695
                                   GET 15 ;
1696
                                   NOW ;
1697
                                   COMPARE ;
1698
                                   LT ;
1699
                                   IF
1700
                                     { DROP 5 ; PUSH nat 109 ; FAILWITH }
1701
                                     { DUP 3 ;
1702
                                       GET 19 ;
1703
                                       NOW ;
1704
                                       COMPARE ;
1705
                                       GT ;
1706
                                       IF
1707
                                         { DROP 5 ; PUSH nat 110 ; FAILWITH }
1708
                                         { PUSH nat 0 ;
1709
                                           DUP 4 ;
1710
                                           GET 13 ;
1711
                                           COMPARE ;
1712
                                           EQ ;
1713
                                           IF
1714
                                             { NIL (pair address
1715
                                                         (list (pair address
1716
                                                                    (pair nat nat)))) ;
1717
                                               NIL (pair address (pair nat nat)) ;
1718
                                               PUSH nat 1 ;
1719
                                               DUP 6 ;
1720
                                               GET 3 ;
1721
                                               DIG 4 ;
1722
                                               PAIR 3 ;
1723
                                               CONS ;
1724
                                               SELF_ADDRESS ;
1725
                                               PAIR ;
1726
                                               CONS ;
1727
                                               DIG 2 ;
1728
                                               GET 5 ;
1729
                                               CONTRACT %transfer (list (pair address
1730
                                                                             (list (pair
1731
                                                                                    address
1732
                                                                                    (pair
1733
                                                                                      nat
1734
                                                                                      nat))))) ;
1735
                                               IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
1736
                                               SWAP ;
1737
                                               MAP { DUP ;
1738
                                                     CDR ;
1739
                                                     MAP { DUP ;
1740
                                                           GET 4 ;
1741
                                                           DUP 2 ;
1742
                                                           GET 3 ;
1743
                                                           PAIR ;
1744
                                                           SWAP ;
1745
                                                           CAR ;
1746
                                                           PAIR } ;
1747
                                                     SWAP ;
1748
                                                     CAR ;
1749
                                                     PAIR } ;
1750
                                               SWAP ;
1751
                                               PUSH mutez 0 ;
1752
                                               DIG 2 ;
1753
                                               TRANSFER_TOKENS ;
1754
                                               DUP 4 ;
1755
                                               DUP 5 ;
1756
                                               GET 11 ;
1757
                                               NONE (pair address
1758
                                                          (pair nat
1759
                                                                (pair address
1760
                                                                      (pair bool
1761
                                                                            (pair bool
1762
                                                                                  (pair
1763
                                                                                    nat
1764
                                                                                    (pair
1765
                                                                                      nat
1766
                                                                                      (pair
1767
                                                                                        timestamp
1768
                                                                                        (pair
1769
                                                                                          int
1770
                                                                                          (pair
1771
                                                                                            timestamp
1772
                                                                                            (pair
1773
                                                                                              address
1774
                                                                                              (pair
1775
                                                                                                string
1776
                                                                                                (pair
1777
                                                                                                  (set string)
1778
                                                                                                  bool))))))))))))) ;
1779
                                               DIG 5 ;
1780
                                               CAR ;
1781
                                               UPDATE ;
1782
                                               UPDATE 11 ;
1783
                                               DIG 3 ;
1784
                                               GET 7 ;
1785
                                               NONE nat ;
1786
                                               DIG 4 ;
1787
                                               UPDATE ;
1788
                                               UPDATE 7 ;
1789
                                               NIL operation ;
1790
                                               DIG 2 ;
1791
                                               CONS }
1792
                                             { DUP 3 ;
1793
                                               GET 7 ;
1794
                                               IF
1795
                                                 { DUP 3 ;
1796
                                                   GET 17 ;
1797
                                                   DUP 4 ;
1798
                                                   GET 13 ;
1799
                                                   NOW ;
1800
                                                   DUP 3 ;
1801
                                                   DUP 7 ;
1802
                                                   GET 15 ;
1803
                                                   ADD ;
1804
                                                   SUB ;
1805
                                                   ISNAT ;
1806
                                                   IF_NONE
1807
                                                     { SWAP ; DROP }
1808
                                                     { DUP 2 ;
1809
                                                       DIG 3 ;
1810
                                                       ABS ;
1811
                                                       DIG 3 ;
1812
                                                       DUP 7 ;
1813
                                                       GET 11 ;
1814
                                                       SUB ;
1815
                                                       ABS ;
1816
                                                       DIG 3 ;
1817
                                                       MUL ;
1818
                                                       EDIV ;
1819
                                                       IF_NONE
1820
                                                         { PUSH string "DIV by 0" ;
1821
                                                           FAILWITH }
1822
                                                         {} ;
1823
                                                       CAR ;
1824
                                                       ADD } }
1825
                                                 { DUP 3 ; GET 13 } ;
1826
                                               DUP 4 ;
1827
                                               GET 25 ;
1828
                                               DUP 6 ;
1829
                                               GET 3 ;
1830
                                               MEM ;
1831
                                               NOT ;
1832
                                               IF { PUSH nat 138 ; FAILWITH } {} ;
1833
                                               PUSH string "XTZ" ;
1834
                                               DUP 6 ;
1835
                                               GET 3 ;
1836
                                               COMPARE ;
1837
                                               EQ ;
1838
                                               IF
1839
                                                 { AMOUNT ;
1840
                                                   PUSH mutez 1 ;
1841
                                                   SWAP ;
1842
                                                   EDIV ;
1843
                                                   IF_NONE
1844
                                                     { PUSH string "DIV by 0" ; FAILWITH }
1845
                                                     {} ;
1846
                                                   CAR }
1847
                                                 { DUP 5 ; GET 5 } ;
1848
                                               DUP 5 ;
1849
                                               GET 26 ;
1850
                                               NOT ;
1851
                                               IF
1852
                                                 { SWAP }
1853
                                                 { DUP 6 ;
1854
                                                   GET 3 ;
1855
                                                   DUP 6 ;
1856
                                                   GET 23 ;
1857
                                                   DUP 2 ;
1858
                                                   DUP 2 ;
1859
                                                   COMPARE ;
1860
                                                   EQ ;
1861
                                                   IF
1862
                                                     { DROP 2 ; SWAP }
1863
                                                     { PUSH string "USD" ;
1864
                                                       DUP 3 ;
1865
                                                       COMPARE ;
1866
                                                       EQ ;
1867
                                                       IF
1868
                                                         { DUP 9 ;
1869
                                                           GET 23 ;
1870
                                                           DUG 2 ;
1871
                                                           PAIR ;
1872
                                                           GET ;
1873
                                                           IF_NONE
1874
                                                             { PUSH nat 136 ; FAILWITH }
1875
                                                             { PUSH string "" ;
1876
                                                               PUSH bool True ;
1877
                                                               DIG 2 ;
1878
                                                               PAIR ;
1879
                                                               PAIR } }
1880
                                                         { PUSH string "USD" ;
1881
                                                           DUP 2 ;
1882
                                                           COMPARE ;
1883
                                                           EQ ;
1884
                                                           IF
1885
                                                             { DUP 9 ;
1886
                                                               GET 23 ;
1887
                                                               SWAP ;
1888
                                                               DIG 2 ;
1889
                                                               PAIR ;
1890
                                                               GET ;
1891
                                                               IF_NONE
1892
                                                                 { PUSH nat 136 ;
1893
                                                                   FAILWITH }
1894
                                                                 { PUSH string "" ;
1895
                                                                   PUSH bool False ;
1896
                                                                   DIG 2 ;
1897
                                                                   PAIR ;
1898
                                                                   PAIR } }
1899
                                                             { DUP 9 ;
1900
                                                               GET 23 ;
1901
                                                               PUSH string "USD" ;
1902
                                                               DIG 2 ;
1903
                                                               PAIR ;
1904
                                                               GET ;
1905
                                                               IF_NONE
1906
                                                                 { PUSH nat 136 ;
1907
                                                                   FAILWITH }
1908
                                                                 {} ;
1909
                                                               DUP 9 ;
1910
                                                               GET 23 ;
1911
                                                               PUSH string "USD" ;
1912
                                                               DIG 3 ;
1913
                                                               PAIR ;
1914
                                                               GET ;
1915
                                                               IF_NONE
1916
                                                                 { PUSH nat 136 ;
1917
                                                                   FAILWITH }
1918
                                                                 {} ;
1919
                                                               PUSH bool True ;
1920
                                                               DIG 2 ;
1921
                                                               PAIR ;
1922
                                                               PAIR } } ;
1923
                                                       UNPAIR ;
1924
                                                       UNPAIR ;
1925
                                                       PUSH nat 1000000 ;
1926
                                                       PUSH string "" ;
1927
                                                       DUP 5 ;
1928
                                                       COMPARE ;
1929
                                                       EQ ;
1930
                                                       IF
1931
                                                         { DIG 3 ;
1932
                                                           DROP ;
1933
                                                           DUP 10 ;
1934
                                                           GET 25 ;
1935
                                                           DIG 2 ;
1936
                                                           VIEW "getPrice"
1937
                                                                 (pair timestamp nat) ;
1938
                                                           IF_NONE
1939
                                                             { PUSH nat 137 ; FAILWITH }
1940
                                                             {} ;
1941
                                                           UNPAIR ;
1942
                                                           DUP 11 ;
1943
                                                           GET 30 ;
1944
                                                           NOW ;
1945
                                                           SUB ;
1946
                                                           SWAP ;
1947
                                                           COMPARE ;
1948
                                                           LT ;
1949
                                                           IF
1950
                                                             { SWAP ;
1951
                                                               DIG 2 ;
1952
                                                               DIG 4 ;
1953
                                                               DROP 4 ;
1954
                                                               PUSH nat 151 ;
1955
                                                               FAILWITH }
1956
                                                             { DIG 2 ;
1957
                                                               IF
1958
                                                                 { DIG 3 ;
1959
                                                                   MUL ;
1960
                                                                   EDIV ;
1961
                                                                   IF_NONE
1962
                                                                     { PUSH string "DIV by 0" ;
1963
                                                                       FAILWITH }
1964
                                                                     {} ;
1965
                                                                   CAR }
1966
                                                                 { SWAP ;
1967
                                                                   DIG 3 ;
1968
                                                                   MUL ;
1969
                                                                   EDIV ;
1970
                                                                   IF_NONE
1971
                                                                     { PUSH string "DIV by 0" ;
1972
                                                                       FAILWITH }
1973
                                                                     {} ;
1974
                                                                   CAR } } }
1975
                                                         { DIG 2 ;
1976
                                                           DROP 2 ;
1977
                                                           DUP 9 ;
1978
                                                           GET 25 ;
1979
                                                           SWAP ;
1980
                                                           VIEW "getPrice"
1981
                                                                 (pair timestamp nat) ;
1982
                                                           IF_NONE
1983
                                                             { PUSH nat 137 ; FAILWITH }
1984
                                                             {} ;
1985
                                                           UNPAIR ;
1986
                                                           DUP 10 ;
1987
                                                           GET 30 ;
1988
                                                           NOW ;
1989
                                                           SUB ;
1990
                                                           SWAP ;
1991
                                                           COMPARE ;
1992
                                                           LT ;
1993
                                                           IF
1994
                                                             { SWAP ;
1995
                                                               DIG 3 ;
1996
                                                               DROP 3 ;
1997
                                                               PUSH nat 151 ;
1998
                                                               FAILWITH }
1999
                                                             { DUP 9 ;
2000
                                                               GET 25 ;
2001
                                                               DIG 2 ;
2002
                                                               VIEW "getPrice"
2003
                                                                     (pair timestamp nat) ;
2004
                                                               IF_NONE
2005
                                                                 { PUSH nat 137 ;
2006
                                                                   FAILWITH }
2007
                                                                 {} ;
2008
                                                               UNPAIR ;
2009
                                                               DUP 10 ;
2010
                                                               GET 30 ;
2011
                                                               NOW ;
2012
                                                               SUB ;
2013
                                                               SWAP ;
2014
                                                               COMPARE ;
2015
                                                               LT ;
2016
                                                               IF
2017
                                                                 { SWAP ;
2018
                                                                   DIG 3 ;
2019
                                                                   DROP 3 ;
2020
                                                                   PUSH nat 151 ;
2021
                                                                   FAILWITH }
2022
                                                                 { SWAP ;
2023
                                                                   DIG 3 ;
2024
                                                                   MUL ;
2025
                                                                   EDIV ;
2026
                                                                   IF_NONE
2027
                                                                     { PUSH string "DIV by 0" ;
2028
                                                                       FAILWITH }
2029
                                                                     {} ;
2030
                                                                   CAR } } } } } ;
2031
                                               SWAP ;
2032
                                               DUP 2 ;
2033
                                               COMPARE ;
2034
                                               LE ;
2035
                                               NOT ;
2036
                                               IF { PUSH nat 114 ; FAILWITH } {} ;
2037
                                               PUSH nat 10000 ;
2038
                                               DUP 7 ;
2039
                                               GET 17 ;
2040
                                               DUP 3 ;
2041
                                               MUL ;
2042
                                               EDIV ;
2043
                                               IF_NONE
2044
                                                 { PUSH string "DIV by 0" ; FAILWITH }
2045
                                                 {} ;
2046
                                               CAR ;
2047
                                               PUSH nat 10000 ;
2048
                                               DUP 3 ;
2049
                                               DUP 9 ;
2050
                                               GET 15 ;
2051
                                               MUL ;
2052
                                               EDIV ;
2053
                                               IF_NONE
2054
                                                 { PUSH string "DIV by 0" ; FAILWITH }
2055
                                                 {} ;
2056
                                               CAR ;
2057
                                               DUP ;
2058
                                               DUP 3 ;
2059
                                               ADD ;
2060
                                               DIG 3 ;
2061
                                               SUB ;
2062
                                               ISNAT ;
2063
                                               IF_NONE { PUSH nat 105 ; FAILWITH } {} ;
2064
                                               DUP 8 ;
2065
                                               DUP 7 ;
2066
                                               CAR ;
2067
                                               SENDER ;
2068
                                               DUP 10 ;
2069
                                               GET 3 ;
2070
                                               DIG 4 ;
2071
                                               NIL operation ;
2072
                                               PAIR 6 ;
2073
                                               UNPAIR 6 ;
2074
                                               PUSH nat 0 ;
2075
                                               DUP 3 ;
2076
                                               COMPARE ;
2077
                                               GT ;
2078
                                               IF
2079
                                                 { PUSH string "XTZ" ;
2080
                                                   DUP 4 ;
2081
                                                   COMPARE ;
2082
                                                   EQ ;
2083
                                                   IF
2084
                                                     { DIG 2 ;
2085
                                                       DIG 3 ;
2086
                                                       DIG 5 ;
2087
                                                       DROP 3 ;
2088
                                                       PUSH mutez 1 ;
2089
                                                       DIG 2 ;
2090
                                                       MUL ;
2091
                                                       DIG 2 ;
2092
                                                       CONTRACT unit ;
2093
                                                       IF_NONE
2094
                                                         { PUSH nat 106 ; FAILWITH }
2095
                                                         {} ;
2096
                                                       SWAP ;
2097
                                                       UNIT ;
2098
                                                       TRANSFER_TOKENS ;
2099
                                                       CONS }
2100
                                                     { DIG 5 ;
2101
                                                       GET 21 ;
2102
                                                       DIG 3 ;
2103
                                                       GET ;
2104
                                                       IF_NONE
2105
                                                         { PUSH nat 131 ; FAILWITH }
2106
                                                         {} ;
2107
                                                       PUSH string "fa1.2" ;
2108
                                                       DUP 2 ;
2109
                                                       GET 4 ;
2110
                                                       COMPARE ;
2111
                                                       EQ ;
2112
                                                       IF
2113
                                                         { GET 3 ;
2114
                                                           CONTRACT %transfer (pair
2115
                                                                                (address %from)
2116
                                                                                (pair
2117
                                                                                  (address %to)
2118
                                                                                  (nat %value))) ;
2119
                                                           IF_NONE
2120
                                                             { PUSH nat 132 ; FAILWITH }
2121
                                                             {} ;
2122
                                                           PUSH mutez 0 ;
2123
                                                           DIG 3 ;
2124
                                                           DIG 5 ;
2125
                                                           DIG 5 ;
2126
                                                           PAIR 3 ;
2127
                                                           TRANSFER_TOKENS ;
2128
                                                           CONS }
2129
                                                         { PUSH string "fa2" ;
2130
                                                           DUP 2 ;
2131
                                                           GET 4 ;
2132
                                                           COMPARE ;
2133
                                                           EQ ;
2134
                                                           IF
2135
                                                             { GET 3 ;
2136
                                                               CONTRACT %transfer (list (pair
2137
                                                                                         address
2138
                                                                                         (list (pair
2139
                                                                                                address
2140
                                                                                                (pair
2141
                                                                                                  nat
2142
                                                                                                  nat))))) ;
2143
                                                               IF_NONE
2144
                                                                 { PUSH nat 101 ;
2145
                                                                   FAILWITH }
2146
                                                                 {} ;
2147
                                                               NIL (pair address
2148
                                                                         (list (pair
2149
                                                                                address
2150
                                                                                (pair
2151
                                                                                  nat
2152
                                                                                  nat)))) ;
2153
                                                               NIL (pair address
2154
                                                                         (pair nat nat)) ;
2155
                                                               DIG 4 ;
2156
                                                               PUSH nat 0 ;
2157
                                                               DIG 7 ;
2158
                                                               PAIR 3 ;
2159
                                                               CONS ;
2160
                                                               DIG 4 ;
2161
                                                               PAIR ;
2162
                                                               CONS ;
2163
                                                               MAP { DUP ;
2164
                                                                     CDR ;
2165
                                                                     MAP { DUP ;
2166
                                                                           GET 4 ;
2167
                                                                           DUP 2 ;
2168
                                                                           GET 3 ;
2169
                                                                           PAIR ;
2170
                                                                           SWAP ;
2171
                                                                           CAR ;
2172
                                                                           PAIR } ;
2173
                                                                     SWAP ;
2174
                                                                     CAR ;
2175
                                                                     PAIR } ;
2176
                                                               SWAP ;
2177
                                                               PUSH mutez 0 ;
2178
                                                               DIG 2 ;
2179
                                                               TRANSFER_TOKENS ;
2180
                                                               CONS }
2181
                                                             { DROP 5 ;
2182
                                                               PUSH nat 149 ;
2183
                                                               FAILWITH } } } }
2184
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
2185
                                               DUP 8 ;
2186
                                               DUP 9 ;
2187
                                               GET 3 ;
2188
                                               SENDER ;
2189
                                               DUP 10 ;
2190
                                               GET 3 ;
2191
                                               DIG 5 ;
2192
                                               DIG 5 ;
2193
                                               PAIR 6 ;
2194
                                               UNPAIR 6 ;
2195
                                               PUSH nat 0 ;
2196
                                               DUP 3 ;
2197
                                               COMPARE ;
2198
                                               GT ;
2199
                                               IF
2200
                                                 { PUSH string "XTZ" ;
2201
                                                   DUP 4 ;
2202
                                                   COMPARE ;
2203
                                                   EQ ;
2204
                                                   IF
2205
                                                     { DIG 2 ;
2206
                                                       DIG 3 ;
2207
                                                       DIG 5 ;
2208
                                                       DROP 3 ;
2209
                                                       PUSH mutez 1 ;
2210
                                                       DIG 2 ;
2211
                                                       MUL ;
2212
                                                       DIG 2 ;
2213
                                                       CONTRACT unit ;
2214
                                                       IF_NONE
2215
                                                         { PUSH nat 106 ; FAILWITH }
2216
                                                         {} ;
2217
                                                       SWAP ;
2218
                                                       UNIT ;
2219
                                                       TRANSFER_TOKENS ;
2220
                                                       CONS }
2221
                                                     { DIG 5 ;
2222
                                                       GET 21 ;
2223
                                                       DIG 3 ;
2224
                                                       GET ;
2225
                                                       IF_NONE
2226
                                                         { PUSH nat 131 ; FAILWITH }
2227
                                                         {} ;
2228
                                                       PUSH string "fa1.2" ;
2229
                                                       DUP 2 ;
2230
                                                       GET 4 ;
2231
                                                       COMPARE ;
2232
                                                       EQ ;
2233
                                                       IF
2234
                                                         { GET 3 ;
2235
                                                           CONTRACT %transfer (pair
2236
                                                                                (address %from)
2237
                                                                                (pair
2238
                                                                                  (address %to)
2239
                                                                                  (nat %value))) ;
2240
                                                           IF_NONE
2241
                                                             { PUSH nat 132 ; FAILWITH }
2242
                                                             {} ;
2243
                                                           PUSH mutez 0 ;
2244
                                                           DIG 3 ;
2245
                                                           DIG 5 ;
2246
                                                           DIG 5 ;
2247
                                                           PAIR 3 ;
2248
                                                           TRANSFER_TOKENS ;
2249
                                                           CONS }
2250
                                                         { PUSH string "fa2" ;
2251
                                                           DUP 2 ;
2252
                                                           GET 4 ;
2253
                                                           COMPARE ;
2254
                                                           EQ ;
2255
                                                           IF
2256
                                                             { GET 3 ;
2257
                                                               CONTRACT %transfer (list (pair
2258
                                                                                         address
2259
                                                                                         (list (pair
2260
                                                                                                address
2261
                                                                                                (pair
2262
                                                                                                  nat
2263
                                                                                                  nat))))) ;
2264
                                                               IF_NONE
2265
                                                                 { PUSH nat 101 ;
2266
                                                                   FAILWITH }
2267
                                                                 {} ;
2268
                                                               NIL (pair address
2269
                                                                         (list (pair
2270
                                                                                address
2271
                                                                                (pair
2272
                                                                                  nat
2273
                                                                                  nat)))) ;
2274
                                                               NIL (pair address
2275
                                                                         (pair nat nat)) ;
2276
                                                               DIG 4 ;
2277
                                                               PUSH nat 0 ;
2278
                                                               DIG 7 ;
2279
                                                               PAIR 3 ;
2280
                                                               CONS ;
2281
                                                               DIG 4 ;
2282
                                                               PAIR ;
2283
                                                               CONS ;
2284
                                                               MAP { DUP ;
2285
                                                                     CDR ;
2286
                                                                     MAP { DUP ;
2287
                                                                           GET 4 ;
2288
                                                                           DUP 2 ;
2289
                                                                           GET 3 ;
2290
                                                                           PAIR ;
2291
                                                                           SWAP ;
2292
                                                                           CAR ;
2293
                                                                           PAIR } ;
2294
                                                                     SWAP ;
2295
                                                                     CAR ;
2296
                                                                     PAIR } ;
2297
                                                               SWAP ;
2298
                                                               PUSH mutez 0 ;
2299
                                                               DIG 2 ;
2300
                                                               TRANSFER_TOKENS ;
2301
                                                               CONS }
2302
                                                             { DROP 5 ;
2303
                                                               PUSH nat 149 ;
2304
                                                               FAILWITH } } } }
2305
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
2306
                                               DUP 7 ;
2307
                                               DUP 8 ;
2308
                                               GET 29 ;
2309
                                               SENDER ;
2310
                                               DUP 9 ;
2311
                                               GET 3 ;
2312
                                               DIG 5 ;
2313
                                               DIG 5 ;
2314
                                               PAIR 6 ;
2315
                                               UNPAIR 6 ;
2316
                                               PUSH nat 0 ;
2317
                                               DUP 3 ;
2318
                                               COMPARE ;
2319
                                               GT ;
2320
                                               IF
2321
                                                 { PUSH string "XTZ" ;
2322
                                                   DUP 4 ;
2323
                                                   COMPARE ;
2324
                                                   EQ ;
2325
                                                   IF
2326
                                                     { DIG 2 ;
2327
                                                       DIG 3 ;
2328
                                                       DIG 5 ;
2329
                                                       DROP 3 ;
2330
                                                       PUSH mutez 1 ;
2331
                                                       DIG 2 ;
2332
                                                       MUL ;
2333
                                                       DIG 2 ;
2334
                                                       CONTRACT unit ;
2335
                                                       IF_NONE
2336
                                                         { PUSH nat 106 ; FAILWITH }
2337
                                                         {} ;
2338
                                                       SWAP ;
2339
                                                       UNIT ;
2340
                                                       TRANSFER_TOKENS ;
2341
                                                       CONS }
2342
                                                     { DIG 5 ;
2343
                                                       GET 21 ;
2344
                                                       DIG 3 ;
2345
                                                       GET ;
2346
                                                       IF_NONE
2347
                                                         { PUSH nat 131 ; FAILWITH }
2348
                                                         {} ;
2349
                                                       PUSH string "fa1.2" ;
2350
                                                       DUP 2 ;
2351
                                                       GET 4 ;
2352
                                                       COMPARE ;
2353
                                                       EQ ;
2354
                                                       IF
2355
                                                         { GET 3 ;
2356
                                                           CONTRACT %transfer (pair
2357
                                                                                (address %from)
2358
                                                                                (pair
2359
                                                                                  (address %to)
2360
                                                                                  (nat %value))) ;
2361
                                                           IF_NONE
2362
                                                             { PUSH nat 132 ; FAILWITH }
2363
                                                             {} ;
2364
                                                           PUSH mutez 0 ;
2365
                                                           DIG 3 ;
2366
                                                           DIG 5 ;
2367
                                                           DIG 5 ;
2368
                                                           PAIR 3 ;
2369
                                                           TRANSFER_TOKENS ;
2370
                                                           CONS }
2371
                                                         { PUSH string "fa2" ;
2372
                                                           DUP 2 ;
2373
                                                           GET 4 ;
2374
                                                           COMPARE ;
2375
                                                           EQ ;
2376
                                                           IF
2377
                                                             { GET 3 ;
2378
                                                               CONTRACT %transfer (list (pair
2379
                                                                                         address
2380
                                                                                         (list (pair
2381
                                                                                                address
2382
                                                                                                (pair
2383
                                                                                                  nat
2384
                                                                                                  nat))))) ;
2385
                                                               IF_NONE
2386
                                                                 { PUSH nat 101 ;
2387
                                                                   FAILWITH }
2388
                                                                 {} ;
2389
                                                               NIL (pair address
2390
                                                                         (list (pair
2391
                                                                                address
2392
                                                                                (pair
2393
                                                                                  nat
2394
                                                                                  nat)))) ;
2395
                                                               NIL (pair address
2396
                                                                         (pair nat nat)) ;
2397
                                                               DIG 4 ;
2398
                                                               PUSH nat 0 ;
2399
                                                               DIG 7 ;
2400
                                                               PAIR 3 ;
2401
                                                               CONS ;
2402
                                                               DIG 4 ;
2403
                                                               PAIR ;
2404
                                                               CONS ;
2405
                                                               MAP { DUP ;
2406
                                                                     CDR ;
2407
                                                                     MAP { DUP ;
2408
                                                                           GET 4 ;
2409
                                                                           DUP 2 ;
2410
                                                                           GET 3 ;
2411
                                                                           PAIR ;
2412
                                                                           SWAP ;
2413
                                                                           CAR ;
2414
                                                                           PAIR } ;
2415
                                                                     SWAP ;
2416
                                                                     CAR ;
2417
                                                                     PAIR } ;
2418
                                                               SWAP ;
2419
                                                               PUSH mutez 0 ;
2420
                                                               DIG 2 ;
2421
                                                               TRANSFER_TOKENS ;
2422
                                                               CONS }
2423
                                                             { DROP 5 ;
2424
                                                               PUSH nat 149 ;
2425
                                                               FAILWITH } } } }
2426
                                                 { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
2427
                                               NIL (pair address
2428
                                                         (list (pair address
2429
                                                                    (pair nat nat)))) ;
2430
                                               NIL (pair address (pair nat nat)) ;
2431
                                               PUSH nat 1 ;
2432
                                               DUP 7 ;
2433
                                               GET 3 ;
2434
                                               DIG 5 ;
2435
                                               PAIR 3 ;
2436
                                               CONS ;
2437
                                               SELF_ADDRESS ;
2438
                                               PAIR ;
2439
                                               CONS ;
2440
                                               DIG 3 ;
2441
                                               GET 5 ;
2442
                                               CONTRACT %transfer (list (pair address
2443
                                                                             (list (pair
2444
                                                                                    address
2445
                                                                                    (pair
2446
                                                                                      nat
2447
                                                                                      nat))))) ;
2448
                                               IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
2449
                                               SWAP ;
2450
                                               MAP { DUP ;
2451
                                                     CDR ;
2452
                                                     MAP { DUP ;
2453
                                                           GET 4 ;
2454
                                                           DUP 2 ;
2455
                                                           GET 3 ;
2456
                                                           PAIR ;
2457
                                                           SWAP ;
2458
                                                           CAR ;
2459
                                                           PAIR } ;
2460
                                                     SWAP ;
2461
                                                     CAR ;
2462
                                                     PAIR } ;
2463
                                               SWAP ;
2464
                                               PUSH mutez 0 ;
2465
                                               DIG 2 ;
2466
                                               TRANSFER_TOKENS ;
2467
                                               CONS ;
2468
                                               DUP 4 ;
2469
                                               DUP 5 ;
2470
                                               GET 11 ;
2471
                                               NONE (pair address
2472
                                                          (pair nat
2473
                                                                (pair address
2474
                                                                      (pair bool
2475
                                                                            (pair bool
2476
                                                                                  (pair
2477
                                                                                    nat
2478
                                                                                    (pair
2479
                                                                                      nat
2480
                                                                                      (pair
2481
                                                                                        timestamp
2482
                                                                                        (pair
2483
                                                                                          int
2484
                                                                                          (pair
2485
                                                                                            timestamp
2486
                                                                                            (pair
2487
                                                                                              address
2488
                                                                                              (pair
2489
                                                                                                string
2490
                                                                                                (pair
2491
                                                                                                  (set string)
2492
                                                                                                  bool))))))))))))) ;
2493
                                               DIG 5 ;
2494
                                               CAR ;
2495
                                               UPDATE ;
2496
                                               UPDATE 11 ;
2497
                                               DIG 3 ;
2498
                                               GET 7 ;
2499
                                               NONE nat ;
2500
                                               DIG 4 ;
2501
                                               UPDATE ;
2502
                                               UPDATE 7 ;
2503
                                               SWAP } ;
2504
                                           PAIR } } } } }
2505
                         { DUP 2 ;
2506
                           GET 19 ;
2507
                           IF
2508
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
2509
                             { DUP 2 ;
2510
                               CAR ;
2511
                               DUP 2 ;
2512
                               GET 3 ;
2513
                               MEM ;
2514
                               NOT ;
2515
                               IF
2516
                                 { DROP 2 ; PUSH nat 152 ; FAILWITH }
2517
                                 { DUP ;
2518
                                   GET 9 ;
2519
                                   DUP 2 ;
2520
                                   GET 7 ;
2521
                                   COMPARE ;
2522
                                   GE ;
2523
                                   IF
2524
                                     { DROP 2 ; PUSH nat 120 ; FAILWITH }
2525
                                     { DUP 2 ;
2526
                                       GET 21 ;
2527
                                       DUP 2 ;
2528
                                       GET 11 ;
2529
                                       GET ;
2530
                                       IF_NONE { PUSH nat 131 ; FAILWITH } { DROP } ;
2531
                                       DUP ;
2532
                                       GET 3 ;
2533
                                       DUP 2 ;
2534
                                       CAR ;
2535
                                       SENDER ;
2536
                                       DUP 4 ;
2537
                                       GET 5 ;
2538
                                       PAIR 4 ;
2539
                                       DUP 2 ;
2540
                                       GET 3 ;
2541
                                       DUP 3 ;
2542
                                       CAR ;
2543
                                       PAIR ;
2544
                                       DUP 4 ;
2545
                                       GET 9 ;
2546
                                       DUP 3 ;
2547
                                       GET ;
2548
                                       IF_NONE
2549
                                         { DUP 3 ;
2550
                                           GET 11 ;
2551
                                           DUP 4 ;
2552
                                           GET 7 ;
2553
                                           SENDER ;
2554
                                           PAIR ;
2555
                                           DUP 5 ;
2556
                                           GET 12 ;
2557
                                           DUP 6 ;
2558
                                           GET 9 ;
2559
                                           PAIR ;
2560
                                           PAIR ;
2561
                                           PAIR }
2562
                                         { DROP ; PUSH nat 147 ; FAILWITH } ;
2563
                                       DUP 5 ;
2564
                                       GET 7 ;
2565
                                       DUP 3 ;
2566
                                       GET ;
2567
                                       IF_NONE
2568
                                         { SWAP ;
2569
                                           DROP ;
2570
                                           NIL operation ;
2571
                                           NIL (pair address
2572
                                                     (list (pair address (pair nat nat)))) ;
2573
                                           NIL (pair address (pair nat nat)) ;
2574
                                           PUSH nat 1 ;
2575
                                           DUP 7 ;
2576
                                           CAR ;
2577
                                           SELF_ADDRESS ;
2578
                                           PAIR 3 ;
2579
                                           CONS ;
2580
                                           SENDER ;
2581
                                           PAIR ;
2582
                                           CONS ;
2583
                                           DIG 4 ;
2584
                                           GET 3 ;
2585
                                           CONTRACT %transfer (list (pair address
2586
                                                                         (list (pair
2587
                                                                                address
2588
                                                                                (pair
2589
                                                                                  nat
2590
                                                                                  nat))))) ;
2591
                                           IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
2592
                                           SWAP ;
2593
                                           MAP { DUP ;
2594
                                                 CDR ;
2595
                                                 MAP { DUP ;
2596
                                                       GET 4 ;
2597
                                                       DUP 2 ;
2598
                                                       GET 3 ;
2599
                                                       PAIR ;
2600
                                                       SWAP ;
2601
                                                       CAR ;
2602
                                                       PAIR } ;
2603
                                                 SWAP ;
2604
                                                 CAR ;
2605
                                                 PAIR } ;
2606
                                           SWAP ;
2607
                                           PUSH mutez 0 ;
2608
                                           DIG 2 ;
2609
                                           TRANSFER_TOKENS ;
2610
                                           CONS ;
2611
                                           DUP 4 ;
2612
                                           GET 11 ;
2613
                                           DUP 5 ;
2614
                                           GET 7 }
2615
                                         { DIG 4 ;
2616
                                           DROP ;
2617
                                           DUP 5 ;
2618
                                           GET 11 ;
2619
                                           DUP 2 ;
2620
                                           GET ;
2621
                                           IF_NONE
2622
                                             { PUSH string "not possible" ; FAILWITH }
2623
                                             { CAR ;
2624
                                               SENDER ;
2625
                                               COMPARE ;
2626
                                               NEQ ;
2627
                                               IF { PUSH nat 150 ; FAILWITH } {} } ;
2628
                                           NIL operation ;
2629
                                           DUP 6 ;
2630
                                           GET 11 ;
2631
                                           NONE (pair address
2632
                                                      (pair nat
2633
                                                            (pair address
2634
                                                                  (pair bool
2635
                                                                        (pair bool
2636
                                                                              (pair nat
2637
                                                                                    (pair
2638
                                                                                      nat
2639
                                                                                      (pair
2640
                                                                                        timestamp
2641
                                                                                        (pair
2642
                                                                                          int
2643
                                                                                          (pair
2644
                                                                                            timestamp
2645
                                                                                            (pair
2646
                                                                                              address
2647
                                                                                              (pair
2648
                                                                                                string
2649
                                                                                                (pair
2650
                                                                                                  (set string)
2651
                                                                                                  bool))))))))))))) ;
2652
                                           DIG 3 ;
2653
                                           UPDATE ;
2654
                                           DUP 6 ;
2655
                                           GET 7 ;
2656
                                           NONE nat ;
2657
                                           DIG 5 ;
2658
                                           UPDATE } ;
2659
                                       DUP 6 ;
2660
                                       DIG 6 ;
2661
                                       GET 9 ;
2662
                                       DIG 5 ;
2663
                                       SOME ;
2664
                                       DIG 6 ;
2665
                                       UPDATE ;
2666
                                       UPDATE 9 ;
2667
                                       SWAP ;
2668
                                       UPDATE 7 ;
2669
                                       SWAP ;
2670
                                       UPDATE 11 ;
2671
                                       SWAP ;
2672
                                       PAIR } } } } }
2673
                     { IF_LEFT
2674
                         { DUP 2 ;
2675
                           GET 27 ;
2676
                           SENDER ;
2677
                           COMPARE ;
2678
                           NEQ ;
2679
                           IF
2680
                             { SELF_ADDRESS ;
2681
                               DUP 3 ;
2682
                               DIG 3 ;
2683
                               GET 27 ;
2684
                               CONTRACT %callMultisig (pair
2685
                                                        (pair %entrypoint_signature
2686
                                                          (string %name)
2687
                                                          (pair (bytes %params)
2688
                                                                (address %source_contract)))
2689
                                                        (lambda %callback unit
2690
                                                                          (list operation))) ;
2691
                               IF_NONE
2692
                                 { SWAP ;
2693
                                   DIG 2 ;
2694
                                   DROP 2 ;
2695
                                   PUSH string "no call entrypoint" ;
2696
                                   FAILWITH }
2697
                                 { DUP 4 ;
2698
                                   PACK ;
2699
                                   SHA256 ;
2700
                                   SELF_ADDRESS ;
2701
                                   SWAP ;
2702
                                   PUSH string "removeCollection" ;
2703
                                   PAIR 3 ;
2704
                                   SWAP ;
2705
                                   PUSH mutez 0 ;
2706
                                   LAMBDA
2707
                                     (pair (pair address address) unit)
2708
                                     (list operation)
2709
                                     { UNPAIR ;
2710
                                       UNPAIR ;
2711
                                       DIG 2 ;
2712
                                       DROP ;
2713
                                       CONTRACT %removeCollection address ;
2714
                                       IF_NONE
2715
                                         { DROP ;
2716
                                           PUSH string "no removeCollection entrypoint" ;
2717
                                           FAILWITH }
2718
                                         { NIL operation ;
2719
                                           SWAP ;
2720
                                           PUSH mutez 0 ;
2721
                                           DIG 3 ;
2722
                                           TRANSFER_TOKENS ;
2723
                                           CONS } } ;
2724
                                   DUP 7 ;
2725
                                   DUP 7 ;
2726
                                   PAIR ;
2727
                                   APPLY ;
2728
                                   DIG 5 ;
2729
                                   DIG 6 ;
2730
                                   DROP 2 ;
2731
                                   DIG 3 ;
2732
                                   PAIR ;
2733
                                   TRANSFER_TOKENS ;
2734
                                   NIL operation ;
2735
                                   SWAP ;
2736
                                   CONS } }
2737
                             { DUP 2 ;
2738
                               DIG 2 ;
2739
                               CAR ;
2740
                               DIG 2 ;
2741
                               PUSH bool False ;
2742
                               SWAP ;
2743
                               UPDATE ;
2744
                               UPDATE 1 ;
2745
                               NIL operation } ;
2746
                           PAIR }
2747
                         { DUP 2 ;
2748
                           GET 11 ;
2749
                           DUP 2 ;
2750
                           GET ;
2751
                           IF_NONE { PUSH nat 103 ; FAILWITH } {} ;
2752
                           DUP ;
2753
                           CAR ;
2754
                           SENDER ;
2755
                           COMPARE ;
2756
                           NEQ ;
2757
                           IF
2758
                             { DROP 3 ; PUSH nat 104 ; FAILWITH }
2759
                             { NIL (pair address (list (pair address (pair nat nat)))) ;
2760
                               NIL (pair address (pair nat nat)) ;
2761
                               PUSH nat 1 ;
2762
                               DUP 4 ;
2763
                               GET 3 ;
2764
                               SENDER ;
2765
                               PAIR 3 ;
2766
                               CONS ;
2767
                               SELF_ADDRESS ;
2768
                               PAIR ;
2769
                               CONS ;
2770
                               DUP 2 ;
2771
                               GET 5 ;
2772
                               CONTRACT %transfer (list (pair address
2773
                                                             (list (pair address
2774
                                                                        (pair nat nat))))) ;
2775
                               IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
2776
                               SWAP ;
2777
                               MAP { DUP ;
2778
                                     CDR ;
2779
                                     MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ;
2780
                                     SWAP ;
2781
                                     CAR ;
2782
                                     PAIR } ;
2783
                               SWAP ;
2784
                               PUSH mutez 0 ;
2785
                               DIG 2 ;
2786
                               TRANSFER_TOKENS ;
2787
                               DUP 4 ;
2788
                               DUP 5 ;
2789
                               GET 11 ;
2790
                               NONE (pair address
2791
                                          (pair nat
2792
                                                (pair address
2793
                                                      (pair bool
2794
                                                            (pair bool
2795
                                                                  (pair nat
2796
                                                                        (pair nat
2797
                                                                              (pair
2798
                                                                                timestamp
2799
                                                                                (pair
2800
                                                                                  int
2801
                                                                                  (pair
2802
                                                                                    timestamp
2803
                                                                                    (pair
2804
                                                                                      address
2805
                                                                                      (pair
2806
                                                                                        string
2807
                                                                                        (pair
2808
                                                                                          (set string)
2809
                                                                                          bool))))))))))))) ;
2810
                               DIG 5 ;
2811
                               UPDATE ;
2812
                               UPDATE 11 ;
2813
                               DIG 3 ;
2814
                               GET 7 ;
2815
                               NONE nat ;
2816
                               DUP 5 ;
2817
                               GET 5 ;
2818
                               DIG 5 ;
2819
                               GET 3 ;
2820
                               PAIR ;
2821
                               UPDATE ;
2822
                               UPDATE 7 ;
2823
                               NIL operation ;
2824
                               DIG 2 ;
2825
                               CONS ;
2826
                               PAIR } } } } }
2827
             { IF_LEFT
2828
                 { IF_LEFT
2829
                     { IF_LEFT
2830
                         { DUP 2 ;
2831
                           GET 19 ;
2832
                           IF
2833
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
2834
                             { DUP 2 ;
2835
                               CAR ;
2836
                               DUP 2 ;
2837
                               GET 3 ;
2838
                               MEM ;
2839
                               NOT ;
2840
                               IF
2841
                                 { DROP 2 ; PUSH nat 152 ; FAILWITH }
2842
                                 { DUP ;
2843
                                   GET 7 ;
2844
                                   DUP 2 ;
2845
                                   GET 5 ;
2846
                                   COMPARE ;
2847
                                   GT ;
2848
                                   IF
2849
                                     { DROP 2 ; PUSH nat 120 ; FAILWITH }
2850
                                     { PUSH mutez 0 ;
2851
                                       AMOUNT ;
2852
                                       COMPARE ;
2853
                                       NEQ ;
2854
                                       PUSH string "XTZ" ;
2855
                                       DUP 3 ;
2856
                                       GET 9 ;
2857
                                       COMPARE ;
2858
                                       NEQ ;
2859
                                       AND ;
2860
                                       IF
2861
                                         { DROP 2 ; PUSH nat 133 ; FAILWITH }
2862
                                         { DUP ;
2863
                                           GET 3 ;
2864
                                           DUP 2 ;
2865
                                           CAR ;
2866
                                           SENDER ;
2867
                                           PAIR 3 ;
2868
                                           DUP 3 ;
2869
                                           GET 13 ;
2870
                                           DUP 2 ;
2871
                                           GET ;
2872
                                           IF_NONE
2873
                                             { PUSH string "XTZ" ;
2874
                                               DUP 3 ;
2875
                                               GET 9 ;
2876
                                               COMPARE ;
2877
                                               EQ ;
2878
                                               IF
2879
                                                 { AMOUNT ;
2880
                                                   PUSH mutez 1 ;
2881
                                                   SWAP ;
2882
                                                   EDIV ;
2883
                                                   IF_NONE
2884
                                                     { PUSH string "DIV by 0" ; FAILWITH }
2885
                                                     {} ;
2886
                                                   CAR ;
2887
                                                   DUP 3 ;
2888
                                                   GET 10 ;
2889
                                                   COMPARE ;
2890
                                                   NEQ ;
2891
                                                   IF
2892
                                                     { PUSH nat 140 ; FAILWITH }
2893
                                                     { AMOUNT ;
2894
                                                       PUSH mutez 1 ;
2895
                                                       SWAP ;
2896
                                                       EDIV ;
2897
                                                       IF_NONE
2898
                                                         { PUSH string "DIV by 0" ;
2899
                                                           FAILWITH }
2900
                                                         {} ;
2901
                                                       CAR } }
2902
                                                 { DUP 2 ; GET 10 } ;
2903
                                               NIL operation ;
2904
                                               PUSH string "XTZ" ;
2905
                                               DUP 5 ;
2906
                                               GET 9 ;
2907
                                               COMPARE ;
2908
                                               EQ ;
2909
                                               IF
2910
                                                 {}
2911
                                                 { DUP 5 ;
2912
                                                   GET 21 ;
2913
                                                   DUP 5 ;
2914
                                                   GET 9 ;
2915
                                                   GET ;
2916
                                                   IF_NONE
2917
                                                     { DROP ; PUSH nat 131 ; FAILWITH }
2918
                                                     { SWAP ;
2919
                                                       DUP 3 ;
2920
                                                       SELF_ADDRESS ;
2921
                                                       SENDER ;
2922
                                                       DIG 4 ;
2923
                                                       GET 3 ;
2924
                                                       PAIR 4 ;
2925
                                                       UNPAIR 4 ;
2926
                                                       CONTRACT %transfer (pair
2927
                                                                            (address %from)
2928
                                                                            (pair
2929
                                                                              (address %to)
2930
                                                                              (nat %value))) ;
2931
                                                       IF_NONE
2932
                                                         { PUSH nat 132 ; FAILWITH }
2933
                                                         {} ;
2934
                                                       PUSH mutez 0 ;
2935
                                                       DIG 4 ;
2936
                                                       DIG 4 ;
2937
                                                       DIG 4 ;
2938
                                                       PAIR 3 ;
2939
                                                       TRANSFER_TOKENS ;
2940
                                                       CONS } } ;
2941
                                               DUP 5 ;
2942
                                               DIG 5 ;
2943
                                               GET 13 ;
2944
                                               DUP 6 ;
2945
                                               GET 9 ;
2946
                                               DUP 7 ;
2947
                                               GET 7 ;
2948
                                               DIG 7 ;
2949
                                               GET 5 ;
2950
                                               DIG 6 ;
2951
                                               PAIR 4 ;
2952
                                               SOME ;
2953
                                               DIG 4 ;
2954
                                               UPDATE ;
2955
                                               UPDATE 13 ;
2956
                                               SWAP ;
2957
                                               PAIR }
2958
                                             { DROP 4 ; PUSH nat 115 ; FAILWITH } } } } } }
2959
                         { DUP 2 ;
2960
                           GET 27 ;
2961
                           SENDER ;
2962
                           COMPARE ;
2963
                           NEQ ;
2964
                           IF
2965
                             { SELF_ADDRESS ;
2966
                               DUP 3 ;
2967
                               DIG 3 ;
2968
                               GET 27 ;
2969
                               CONTRACT %callMultisig (pair
2970
                                                        (pair %entrypoint_signature
2971
                                                          (string %name)
2972
                                                          (pair (bytes %params)
2973
                                                                (address %source_contract)))
2974
                                                        (lambda %callback unit
2975
                                                                          (list operation))) ;
2976
                               IF_NONE
2977
                                 { SWAP ;
2978
                                   DIG 2 ;
2979
                                   DROP 2 ;
2980
                                   PUSH string "no call entrypoint" ;
2981
                                   FAILWITH }
2982
                                 { DUP 4 ;
2983
                                   PACK ;
2984
                                   SHA256 ;
2985
                                   SELF_ADDRESS ;
2986
                                   SWAP ;
2987
                                   PUSH string "setOracleTolerance" ;
2988
                                   PAIR 3 ;
2989
                                   SWAP ;
2990
                                   PUSH mutez 0 ;
2991
                                   LAMBDA
2992
                                     (pair (pair address int) unit)
2993
                                     (list operation)
2994
                                     { UNPAIR ;
2995
                                       UNPAIR ;
2996
                                       DIG 2 ;
2997
                                       DROP ;
2998
                                       CONTRACT %setOracleTolerance int ;
2999
                                       IF_NONE
3000
                                         { DROP ;
3001
                                           PUSH string "no setOracleTolerance entrypoint" ;
3002
                                           FAILWITH }
3003
                                         { NIL operation ;
3004
                                           SWAP ;
3005
                                           PUSH mutez 0 ;
3006
                                           DIG 3 ;
3007
                                           TRANSFER_TOKENS ;
3008
                                           CONS } } ;
3009
                                   DUP 7 ;
3010
                                   DUP 7 ;
3011
                                   PAIR ;
3012
                                   APPLY ;
3013
                                   DIG 5 ;
3014
                                   DIG 6 ;
3015
                                   DROP 2 ;
3016
                                   DIG 3 ;
3017
                                   PAIR ;
3018
                                   TRANSFER_TOKENS ;
3019
                                   NIL operation ;
3020
                                   SWAP ;
3021
                                   CONS } }
3022
                             { UPDATE 30 ; NIL operation } ;
3023
                           PAIR } }
3024
                     { IF_LEFT
3025
                         { DUP 2 ;
3026
                           GET 27 ;
3027
                           SENDER ;
3028
                           COMPARE ;
3029
                           NEQ ;
3030
                           IF
3031
                             { SELF_ADDRESS ;
3032
                               DUP 3 ;
3033
                               DIG 3 ;
3034
                               GET 27 ;
3035
                               CONTRACT %callMultisig (pair
3036
                                                        (pair %entrypoint_signature
3037
                                                          (string %name)
3038
                                                          (pair (bytes %params)
3039
                                                                (address %source_contract)))
3040
                                                        (lambda %callback unit
3041
                                                                          (list operation))) ;
3042
                               IF_NONE
3043
                                 { SWAP ;
3044
                                   DIG 2 ;
3045
                                   DROP 2 ;
3046
                                   PUSH string "no call entrypoint" ;
3047
                                   FAILWITH }
3048
                                 { DUP 4 ;
3049
                                   PACK ;
3050
                                   SHA256 ;
3051
                                   SELF_ADDRESS ;
3052
                                   SWAP ;
3053
                                   PUSH string "setPause" ;
3054
                                   PAIR 3 ;
3055
                                   SWAP ;
3056
                                   PUSH mutez 0 ;
3057
                                   LAMBDA
3058
                                     (pair (pair address bool) unit)
3059
                                     (list operation)
3060
                                     { UNPAIR ;
3061
                                       UNPAIR ;
3062
                                       DIG 2 ;
3063
                                       DROP ;
3064
                                       CONTRACT %setPause bool ;
3065
                                       IF_NONE
3066
                                         { DROP ;
3067
                                           PUSH string "no setPause entrypoint" ;
3068
                                           FAILWITH }
3069
                                         { NIL operation ;
3070
                                           SWAP ;
3071
                                           PUSH mutez 0 ;
3072
                                           DIG 3 ;
3073
                                           TRANSFER_TOKENS ;
3074
                                           CONS } } ;
3075
                                   DUP 7 ;
3076
                                   DUP 7 ;
3077
                                   PAIR ;
3078
                                   APPLY ;
3079
                                   DIG 5 ;
3080
                                   DIG 6 ;
3081
                                   DROP 2 ;
3082
                                   DIG 3 ;
3083
                                   PAIR ;
3084
                                   TRANSFER_TOKENS ;
3085
                                   NIL operation ;
3086
                                   SWAP ;
3087
                                   CONS } }
3088
                             { UPDATE 19 ; NIL operation } ;
3089
                           PAIR }
3090
                         { DUP 2 ;
3091
                           GET 27 ;
3092
                           SENDER ;
3093
                           COMPARE ;
3094
                           NEQ ;
3095
                           IF
3096
                             { SELF_ADDRESS ;
3097
                               DUP 3 ;
3098
                               DIG 3 ;
3099
                               GET 27 ;
3100
                               CONTRACT %callMultisig (pair
3101
                                                        (pair %entrypoint_signature
3102
                                                          (string %name)
3103
                                                          (pair (bytes %params)
3104
                                                                (address %source_contract)))
3105
                                                        (lambda %callback unit
3106
                                                                          (list operation))) ;
3107
                               IF_NONE
3108
                                 { SWAP ;
3109
                                   DIG 2 ;
3110
                                   DROP 2 ;
3111
                                   PUSH string "no call entrypoint" ;
3112
                                   FAILWITH }
3113
                                 { DUP 4 ;
3114
                                   PACK ;
3115
                                   SHA256 ;
3116
                                   SELF_ADDRESS ;
3117
                                   SWAP ;
3118
                                   PUSH string "updateAllowedTokens" ;
3119
                                   PAIR 3 ;
3120
                                   SWAP ;
3121
                                   PUSH mutez 0 ;
3122
                                   LAMBDA
3123
                                     (pair
3124
                                       (pair address
3125
                                             (pair string
3126
                                                   (or (pair address string) unit)))
3127
                                       unit)
3128
                                     (list operation)
3129
                                     { UNPAIR ;
3130
                                       UNPAIR ;
3131
                                       DIG 2 ;
3132
                                       DROP ;
3133
                                       CONTRACT %updateAllowedTokens (pair
3134
                                                                       (string %token_symbol)
3135
                                                                       (or %direction
3136
                                                                         (pair %add_token
3137
                                                                           (address %fa_address)
3138
                                                                           (string %fa_type))
3139
                                                                         (unit %remove_token))) ;
3140
                                       IF_NONE
3141
                                         { DROP ;
3142
                                           PUSH string "no updateAllowedTokens entrypoint" ;
3143
                                           FAILWITH }
3144
                                         { NIL operation ;
3145
                                           SWAP ;
3146
                                           PUSH mutez 0 ;
3147
                                           DIG 3 ;
3148
                                           TRANSFER_TOKENS ;
3149
                                           CONS } } ;
3150
                                   DUP 7 ;
3151
                                   DUP 7 ;
3152
                                   PAIR ;
3153
                                   APPLY ;
3154
                                   DIG 5 ;
3155
                                   DIG 6 ;
3156
                                   DROP 2 ;
3157
                                   DIG 3 ;
3158
                                   PAIR ;
3159
                                   TRANSFER_TOKENS ;
3160
                                   NIL operation ;
3161
                                   SWAP ;
3162
                                   CONS } ;
3163
                               PAIR }
3164
                             { DUP ;
3165
                               CDR ;
3166
                               IF_LEFT
3167
                                 { DUP 3 ;
3168
                                   GET 21 ;
3169
                                   DUP 3 ;
3170
                                   CAR ;
3171
                                   MEM ;
3172
                                   IF
3173
                                     { DROP 3 ; PUSH nat 145 ; FAILWITH }
3174
                                     { DUP 3 ;
3175
                                       GET 23 ;
3176
                                       PUSH string "USD" ;
3177
                                       DUP 4 ;
3178
                                       CAR ;
3179
                                       PAIR ;
3180
                                       MEM ;
3181
                                       IF
3182
                                         { DROP 3 ; PUSH nat 146 ; FAILWITH }
3183
                                         { DUP 3 ;
3184
                                           DUP 4 ;
3185
                                           GET 21 ;
3186
                                           DUP 3 ;
3187
                                           CDR ;
3188
                                           DIG 3 ;
3189
                                           CAR ;
3190
                                           DUP 5 ;
3191
                                           CAR ;
3192
                                           PAIR 3 ;
3193
                                           SOME ;
3194
                                           DUP 4 ;
3195
                                           CAR ;
3196
                                           UPDATE ;
3197
                                           UPDATE 21 ;
3198
                                           DIG 2 ;
3199
                                           GET 23 ;
3200
                                           PUSH string "-USD" ;
3201
                                           DUP 4 ;
3202
                                           CAR ;
3203
                                           CONCAT ;
3204
                                           SOME ;
3205
                                           PUSH string "USD" ;
3206
                                           DIG 4 ;
3207
                                           CAR ;
3208
                                           PAIR ;
3209
                                           UPDATE ;
3210
                                           UPDATE 23 ;
3211
                                           NIL operation ;
3212
                                           PAIR } } }
3213
                                 { DROP ;
3214
                                   DUP 2 ;
3215
                                   DUP 3 ;
3216
                                   GET 21 ;
3217
                                   NONE (pair string (pair address string)) ;
3218
                                   DUP 4 ;
3219
                                   CAR ;
3220
                                   UPDATE ;
3221
                                   UPDATE 21 ;
3222
                                   DIG 2 ;
3223
                                   GET 23 ;
3224
                                   NONE string ;
3225
                                   PUSH string "USD" ;
3226
                                   DIG 4 ;
3227
                                   CAR ;
3228
                                   PAIR ;
3229
                                   UPDATE ;
3230
                                   UPDATE 23 ;
3231
                                   NIL operation ;
3232
                                   PAIR } } } } }
3233
                 { IF_LEFT
3234
                     { IF_LEFT
3235
                         { DUP 2 ;
3236
                           GET 27 ;
3237
                           SENDER ;
3238
                           COMPARE ;
3239
                           NEQ ;
3240
                           IF
3241
                             { SELF_ADDRESS ;
3242
                               DUP 3 ;
3243
                               DIG 3 ;
3244
                               GET 27 ;
3245
                               CONTRACT %callMultisig (pair
3246
                                                        (pair %entrypoint_signature
3247
                                                          (string %name)
3248
                                                          (pair (bytes %params)
3249
                                                                (address %source_contract)))
3250
                                                        (lambda %callback unit
3251
                                                                          (list operation))) ;
3252
                               IF_NONE
3253
                                 { SWAP ;
3254
                                   DIG 2 ;
3255
                                   DROP 2 ;
3256
                                   PUSH string "no call entrypoint" ;
3257
                                   FAILWITH }
3258
                                 { DUP 4 ;
3259
                                   PACK ;
3260
                                   SHA256 ;
3261
                                   SELF_ADDRESS ;
3262
                                   SWAP ;
3263
                                   PUSH string "updateFee" ;
3264
                                   PAIR 3 ;
3265
                                   SWAP ;
3266
                                   PUSH mutez 0 ;
3267
                                   LAMBDA
3268
                                     (pair (pair address nat) unit)
3269
                                     (list operation)
3270
                                     { UNPAIR ;
3271
                                       UNPAIR ;
3272
                                       DIG 2 ;
3273
                                       DROP ;
3274
                                       CONTRACT %updateFee nat ;
3275
                                       IF_NONE
3276
                                         { DROP ;
3277
                                           PUSH string "no updateFee entrypoint" ;
3278
                                           FAILWITH }
3279
                                         { NIL operation ;
3280
                                           SWAP ;
3281
                                           PUSH mutez 0 ;
3282
                                           DIG 3 ;
3283
                                           TRANSFER_TOKENS ;
3284
                                           CONS } } ;
3285
                                   DUP 7 ;
3286
                                   DUP 7 ;
3287
                                   PAIR ;
3288
                                   APPLY ;
3289
                                   DIG 5 ;
3290
                                   DIG 6 ;
3291
                                   DROP 2 ;
3292
                                   DIG 3 ;
3293
                                   PAIR ;
3294
                                   TRANSFER_TOKENS ;
3295
                                   NIL operation ;
3296
                                   SWAP ;
3297
                                   CONS } }
3298
                             { UPDATE 17 ; NIL operation } }
3299
                         { DUP 2 ;
3300
                           GET 27 ;
3301
                           SENDER ;
3302
                           COMPARE ;
3303
                           NEQ ;
3304
                           IF
3305
                             { SELF_ADDRESS ;
3306
                               DUP 3 ;
3307
                               DIG 3 ;
3308
                               GET 27 ;
3309
                               CONTRACT %callMultisig (pair
3310
                                                        (pair %entrypoint_signature
3311
                                                          (string %name)
3312
                                                          (pair (bytes %params)
3313
                                                                (address %source_contract)))
3314
                                                        (lambda %callback unit
3315
                                                                          (list operation))) ;
3316
                               IF_NONE
3317
                                 { SWAP ;
3318
                                   DIG 2 ;
3319
                                   DROP 2 ;
3320
                                   PUSH string "no call entrypoint" ;
3321
                                   FAILWITH }
3322
                                 { DUP 4 ;
3323
                                   PACK ;
3324
                                   SHA256 ;
3325
                                   SELF_ADDRESS ;
3326
                                   SWAP ;
3327
                                   PUSH string "updateMultisig" ;
3328
                                   PAIR 3 ;
3329
                                   SWAP ;
3330
                                   PUSH mutez 0 ;
3331
                                   LAMBDA
3332
                                     (pair (pair address address) unit)
3333
                                     (list operation)
3334
                                     { UNPAIR ;
3335
                                       UNPAIR ;
3336
                                       DIG 2 ;
3337
                                       DROP ;
3338
                                       CONTRACT %updateMultisig address ;
3339
                                       IF_NONE
3340
                                         { DROP ;
3341
                                           PUSH string "no updateMultisig entrypoint" ;
3342
                                           FAILWITH }
3343
                                         { NIL operation ;
3344
                                           SWAP ;
3345
                                           PUSH mutez 0 ;
3346
                                           DIG 3 ;
3347
                                           TRANSFER_TOKENS ;
3348
                                           CONS } } ;
3349
                                   DUP 7 ;
3350
                                   DUP 7 ;
3351
                                   PAIR ;
3352
                                   APPLY ;
3353
                                   DIG 5 ;
3354
                                   DIG 6 ;
3355
                                   DROP 2 ;
3356
                                   DIG 3 ;
3357
                                   PAIR ;
3358
                                   TRANSFER_TOKENS ;
3359
                                   NIL operation ;
3360
                                   SWAP ;
3361
                                   CONS } }
3362
                             { UPDATE 27 ; NIL operation } } ;
3363
                       PAIR }
3364
                     { IF_LEFT
3365
                         { DUP 2 ;
3366
                           GET 19 ;
3367
                           IF
3368
                             { DROP 2 ; PUSH nat 117 ; FAILWITH }
3369
                             { PUSH mutez 0 ;
3370
                               AMOUNT ;
3371
                               COMPARE ;
3372
                               NEQ ;
3373
                               PUSH string "XTZ" ;
3374
                               DUP 3 ;
3375
                               GET 9 ;
3376
                               COMPARE ;
3377
                               NEQ ;
3378
                               AND ;
3379
                               IF
3380
                                 { DROP 2 ; PUSH nat 133 ; FAILWITH }
3381
                                 { DUP ;
3382
                                   GET 7 ;
3383
                                   DUP 2 ;
3384
                                   GET 5 ;
3385
                                   COMPARE ;
3386
                                   GT ;
3387
                                   IF
3388
                                     { DROP 2 ; PUSH nat 120 ; FAILWITH }
3389
                                     { DUP 2 ;
3390
                                       GET 21 ;
3391
                                       DUP 2 ;
3392
                                       GET 9 ;
3393
                                       GET ;
3394
                                       IF_NONE { PUSH nat 131 ; FAILWITH } { DROP } ;
3395
                                       DUP ;
3396
                                       GET 3 ;
3397
                                       DUP 2 ;
3398
                                       CAR ;
3399
                                       SENDER ;
3400
                                       PAIR 3 ;
3401
                                       DUP 3 ;
3402
                                       GET 13 ;
3403
                                       DUP 2 ;
3404
                                       GET ;
3405
                                       IF_NONE
3406
                                         { DROP 3 ; PUSH nat 116 ; FAILWITH }
3407
                                         { NIL operation ;
3408
                                           DUP 2 ;
3409
                                           GET 6 ;
3410
                                           DUP 5 ;
3411
                                           GET 9 ;
3412
                                           COMPARE ;
3413
                                           EQ ;
3414
                                           IF
3415
                                             { PUSH string "XTZ" ;
3416
                                               DUP 5 ;
3417
                                               GET 9 ;
3418
                                               COMPARE ;
3419
                                               EQ ;
3420
                                               IF
3421
                                                 { DUP 4 ;
3422
                                                   GET 10 ;
3423
                                                   AMOUNT ;
3424
                                                   PUSH mutez 1 ;
3425
                                                   SWAP ;
3426
                                                   EDIV ;
3427
                                                   IF_NONE
3428
                                                     { PUSH string "DIV by 0" ; FAILWITH }
3429
                                                     {} ;
3430
                                                   CAR ;
3431
                                                   COMPARE ;
3432
                                                   NEQ ;
3433
                                                   IF
3434
                                                     { DROP ; PUSH nat 140 ; FAILWITH }
3435
                                                     { PUSH mutez 1 ;
3436
                                                       DUP 3 ;
3437
                                                       CAR ;
3438
                                                       MUL ;
3439
                                                       SENDER ;
3440
                                                       CONTRACT unit ;
3441
                                                       IF_NONE
3442
                                                         { PUSH nat 106 ; FAILWITH }
3443
                                                         {} ;
3444
                                                       SWAP ;
3445
                                                       UNIT ;
3446
                                                       TRANSFER_TOKENS ;
3447
                                                       CONS } }
3448
                                                 { DUP 2 ;
3449
                                                   CAR ;
3450
                                                   DUP 5 ;
3451
                                                   GET 10 ;
3452
                                                   SUB ;
3453
                                                   ISNAT ;
3454
                                                   IF_NONE
3455
                                                     { DUP 5 ;
3456
                                                       SENDER ;
3457
                                                       SELF_ADDRESS ;
3458
                                                       DUP 7 ;
3459
                                                       GET 9 ;
3460
                                                       DUP 8 ;
3461
                                                       GET 10 ;
3462
                                                       DUP 7 ;
3463
                                                       CAR ;
3464
                                                       SUB ;
3465
                                                       ABS ;
3466
                                                       DIG 5 ;
3467
                                                       PAIR 6 ;
3468
                                                       UNPAIR 6 ;
3469
                                                       DIG 5 ;
3470
                                                       GET 21 ;
3471
                                                       DIG 3 ;
3472
                                                       GET ;
3473
                                                       IF_NONE
3474
                                                         { PUSH nat 131 ; FAILWITH }
3475
                                                         {} ;
3476
                                                       PUSH string "fa1.2" ;
3477
                                                       DUP 2 ;
3478
                                                       GET 4 ;
3479
                                                       COMPARE ;
3480
                                                       EQ ;
3481
                                                       IF
3482
                                                         { GET 3 ;
3483
                                                           CONTRACT %transfer (pair
3484
                                                                                (address %from)
3485
                                                                                (pair
3486
                                                                                  (address %to)
3487
                                                                                  (nat %value))) ;
3488
                                                           IF_NONE
3489
                                                             { PUSH nat 132 ; FAILWITH }
3490
                                                             {} ;
3491
                                                           PUSH mutez 0 ;
3492
                                                           DIG 3 ;
3493
                                                           DIG 5 ;
3494
                                                           DIG 5 ;
3495
                                                           PAIR 3 ;
3496
                                                           TRANSFER_TOKENS ;
3497
                                                           CONS }
3498
                                                         { PUSH string "fa2" ;
3499
                                                           DUP 2 ;
3500
                                                           GET 4 ;
3501
                                                           COMPARE ;
3502
                                                           EQ ;
3503
                                                           IF
3504
                                                             { GET 3 ;
3505
                                                               CONTRACT %transfer (list (pair
3506
                                                                                         address
3507
                                                                                         (list (pair
3508
                                                                                                address
3509
                                                                                                (pair
3510
                                                                                                  nat
3511
                                                                                                  nat))))) ;
3512
                                                               IF_NONE
3513
                                                                 { PUSH nat 101 ;
3514
                                                                   FAILWITH }
3515
                                                                 {} ;
3516
                                                               NIL (pair address
3517
                                                                         (list (pair
3518
                                                                                address
3519
                                                                                (pair
3520
                                                                                  nat
3521
                                                                                  nat)))) ;
3522
                                                               NIL (pair address
3523
                                                                         (pair nat nat)) ;
3524
                                                               DIG 4 ;
3525
                                                               PUSH nat 0 ;
3526
                                                               DIG 7 ;
3527
                                                               PAIR 3 ;
3528
                                                               CONS ;
3529
                                                               DIG 4 ;
3530
                                                               PAIR ;
3531
                                                               CONS ;
3532
                                                               MAP { DUP ;
3533
                                                                     CDR ;
3534
                                                                     MAP { DUP ;
3535
                                                                           GET 4 ;
3536
                                                                           DUP 2 ;
3537
                                                                           GET 3 ;
3538
                                                                           PAIR ;
3539
                                                                           SWAP ;
3540
                                                                           CAR ;
3541
                                                                           PAIR } ;
3542
                                                                     SWAP ;
3543
                                                                     CAR ;
3544
                                                                     PAIR } ;
3545
                                                               SWAP ;
3546
                                                               PUSH mutez 0 ;
3547
                                                               DIG 2 ;
3548
                                                               TRANSFER_TOKENS ;
3549
                                                               CONS }
3550
                                                             { DROP 5 ;
3551
                                                               PUSH nat 149 ;
3552
                                                               FAILWITH } } }
3553
                                                     { PUSH nat 0 ;
3554
                                                       DUP 2 ;
3555
                                                       COMPARE ;
3556
                                                       NEQ ;
3557
                                                       IF
3558
                                                         { DUP 6 ;
3559
                                                           SELF_ADDRESS ;
3560
                                                           SENDER ;
3561
                                                           DUP 8 ;
3562
                                                           GET 9 ;
3563
                                                           DIG 4 ;
3564
                                                           DIG 5 ;
3565
                                                           PAIR 6 ;
3566
                                                           UNPAIR 6 ;
3567
                                                           DIG 5 ;
3568
                                                           GET 21 ;
3569
                                                           DIG 3 ;
3570
                                                           GET ;
3571
                                                           IF_NONE
3572
                                                             { PUSH nat 131 ; FAILWITH }
3573
                                                             {} ;
3574
                                                           PUSH string "fa1.2" ;
3575
                                                           DUP 2 ;
3576
                                                           GET 4 ;
3577
                                                           COMPARE ;
3578
                                                           EQ ;
3579
                                                           IF
3580
                                                             { GET 3 ;
3581
                                                               CONTRACT %transfer (pair
3582
                                                                                    (address %from)
3583
                                                                                    (pair
3584
                                                                                      (address %to)
3585
                                                                                      (nat %value))) ;
3586
                                                               IF_NONE
3587
                                                                 { PUSH nat 132 ;
3588
                                                                   FAILWITH }
3589
                                                                 {} ;
3590
                                                               PUSH mutez 0 ;
3591
                                                               DIG 3 ;
3592
                                                               DIG 5 ;
3593
                                                               DIG 5 ;
3594
                                                               PAIR 3 ;
3595
                                                               TRANSFER_TOKENS ;
3596
                                                               CONS }
3597
                                                             { PUSH string "fa2" ;
3598
                                                               DUP 2 ;
3599
                                                               GET 4 ;
3600
                                                               COMPARE ;
3601
                                                               EQ ;
3602
                                                               IF
3603
                                                                 { GET 3 ;
3604
                                                                   CONTRACT %transfer (list (pair
3605
                                                                                             address
3606
                                                                                             (list (pair
3607
                                                                                                    address
3608
                                                                                                    (pair
3609
                                                                                                      nat
3610
                                                                                                      nat))))) ;
3611
                                                                   IF_NONE
3612
                                                                     { PUSH nat 101 ;
3613
                                                                       FAILWITH }
3614
                                                                     {} ;
3615
                                                                   NIL (pair address
3616
                                                                             (list (pair
3617
                                                                                    address
3618
                                                                                    (pair
3619
                                                                                      nat
3620
                                                                                      nat)))) ;
3621
                                                                   NIL (pair address
3622
                                                                             (pair nat
3623
                                                                                   nat)) ;
3624
                                                                   DIG 4 ;
3625
                                                                   PUSH nat 0 ;
3626
                                                                   DIG 7 ;
3627
                                                                   PAIR 3 ;
3628
                                                                   CONS ;
3629
                                                                   DIG 4 ;
3630
                                                                   PAIR ;
3631
                                                                   CONS ;
3632
                                                                   MAP { DUP ;
3633
                                                                         CDR ;
3634
                                                                         MAP { DUP ;
3635
                                                                               GET 4 ;
3636
                                                                               DUP 2 ;
3637
                                                                               GET 3 ;
3638
                                                                               PAIR ;
3639
                                                                               SWAP ;
3640
                                                                               CAR ;
3641
                                                                               PAIR } ;
3642
                                                                         SWAP ;
3643
                                                                         CAR ;
3644
                                                                         PAIR } ;
3645
                                                                   SWAP ;
3646
                                                                   PUSH mutez 0 ;
3647
                                                                   DIG 2 ;
3648
                                                                   TRANSFER_TOKENS ;
3649
                                                                   CONS }
3650
                                                                 { DROP 5 ;
3651
                                                                   PUSH nat 149 ;
3652
                                                                   FAILWITH } } }
3653
                                                         { DROP } } } }
3654
                                             { PUSH string "XTZ" ;
3655
                                               DUP 5 ;
3656
                                               GET 9 ;
3657
                                               COMPARE ;
3658
                                               EQ ;
3659
                                               IF
3660
                                                 { DUP 5 ;
3661
                                                   SENDER ;
3662
                                                   SELF_ADDRESS ;
3663
                                                   DUP 5 ;
3664
                                                   GET 6 ;
3665
                                                   DUP 6 ;
3666
                                                   CAR ;
3667
                                                   DIG 5 ;
3668
                                                   PAIR 6 ;
3669
                                                   UNPAIR 6 ;
3670
                                                   DIG 5 ;
3671
                                                   GET 21 ;
3672
                                                   DIG 3 ;
3673
                                                   GET ;
3674
                                                   IF_NONE
3675
                                                     { PUSH nat 131 ; FAILWITH }
3676
                                                     {} ;
3677
                                                   PUSH string "fa1.2" ;
3678
                                                   DUP 2 ;
3679
                                                   GET 4 ;
3680
                                                   COMPARE ;
3681
                                                   EQ ;
3682
                                                   IF
3683
                                                     { GET 3 ;
3684
                                                       CONTRACT %transfer (pair
3685
                                                                            (address %from)
3686
                                                                            (pair
3687
                                                                              (address %to)
3688
                                                                              (nat %value))) ;
3689
                                                       IF_NONE
3690
                                                         { PUSH nat 132 ; FAILWITH }
3691
                                                         {} ;
3692
                                                       PUSH mutez 0 ;
3693
                                                       DIG 3 ;
3694
                                                       DIG 5 ;
3695
                                                       DIG 5 ;
3696
                                                       PAIR 3 ;
3697
                                                       TRANSFER_TOKENS ;
3698
                                                       CONS }
3699
                                                     { PUSH string "fa2" ;
3700
                                                       DUP 2 ;
3701
                                                       GET 4 ;
3702
                                                       COMPARE ;
3703
                                                       EQ ;
3704
                                                       IF
3705
                                                         { GET 3 ;
3706
                                                           CONTRACT %transfer (list (pair
3707
                                                                                     address
3708
                                                                                     (list (pair
3709
                                                                                            address
3710
                                                                                            (pair
3711
                                                                                              nat
3712
                                                                                              nat))))) ;
3713
                                                           IF_NONE
3714
                                                             { PUSH nat 101 ; FAILWITH }
3715
                                                             {} ;
3716
                                                           NIL (pair address
3717
                                                                     (list (pair address
3718
                                                                                (pair
3719
                                                                                  nat
3720
                                                                                  nat)))) ;
3721
                                                           NIL (pair address
3722
                                                                     (pair nat nat)) ;
3723
                                                           DIG 4 ;
3724
                                                           PUSH nat 0 ;
3725
                                                           DIG 7 ;
3726
                                                           PAIR 3 ;
3727
                                                           CONS ;
3728
                                                           DIG 4 ;
3729
                                                           PAIR ;
3730
                                                           CONS ;
3731
                                                           MAP { DUP ;
3732
                                                                 CDR ;
3733
                                                                 MAP { DUP ;
3734
                                                                       GET 4 ;
3735
                                                                       DUP 2 ;
3736
                                                                       GET 3 ;
3737
                                                                       PAIR ;
3738
                                                                       SWAP ;
3739
                                                                       CAR ;
3740
                                                                       PAIR } ;
3741
                                                                 SWAP ;
3742
                                                                 CAR ;
3743
                                                                 PAIR } ;
3744
                                                           SWAP ;
3745
                                                           PUSH mutez 0 ;
3746
                                                           DIG 2 ;
3747
                                                           TRANSFER_TOKENS ;
3748
                                                           CONS }
3749
                                                         { DROP 5 ; PUSH nat 149 ; FAILWITH } } }
3750
                                                 { PUSH string "XTZ" ;
3751
                                                   DUP 3 ;
3752
                                                   GET 6 ;
3753
                                                   COMPARE ;
3754
                                                   EQ ;
3755
                                                   IF
3756
                                                     { DUP 5 ;
3757
                                                       SELF_ADDRESS ;
3758
                                                       SENDER ;
3759
                                                       DUP 7 ;
3760
                                                       GET 9 ;
3761
                                                       DUP 8 ;
3762
                                                       GET 10 ;
3763
                                                       DIG 5 ;
3764
                                                       PAIR 6 ;
3765
                                                       UNPAIR 6 ;
3766
                                                       DIG 5 ;
3767
                                                       GET 21 ;
3768
                                                       DIG 3 ;
3769
                                                       GET ;
3770
                                                       IF_NONE
3771
                                                         { PUSH nat 131 ; FAILWITH }
3772
                                                         {} ;
3773
                                                       PUSH string "fa1.2" ;
3774
                                                       DUP 2 ;
3775
                                                       GET 4 ;
3776
                                                       COMPARE ;
3777
                                                       EQ ;
3778
                                                       IF
3779
                                                         { GET 3 ;
3780
                                                           CONTRACT %transfer (pair
3781
                                                                                (address %from)
3782
                                                                                (pair
3783
                                                                                  (address %to)
3784
                                                                                  (nat %value))) ;
3785
                                                           IF_NONE
3786
                                                             { PUSH nat 132 ; FAILWITH }
3787
                                                             {} ;
3788
                                                           PUSH mutez 0 ;
3789
                                                           DIG 3 ;
3790
                                                           DIG 5 ;
3791
                                                           DIG 5 ;
3792
                                                           PAIR 3 ;
3793
                                                           TRANSFER_TOKENS ;
3794
                                                           CONS }
3795
                                                         { PUSH string "fa2" ;
3796
                                                           DUP 2 ;
3797
                                                           GET 4 ;
3798
                                                           COMPARE ;
3799
                                                           EQ ;
3800
                                                           IF
3801
                                                             { GET 3 ;
3802
                                                               CONTRACT %transfer (list (pair
3803
                                                                                         address
3804
                                                                                         (list (pair
3805
                                                                                                address
3806
                                                                                                (pair
3807
                                                                                                  nat
3808
                                                                                                  nat))))) ;
3809
                                                               IF_NONE
3810
                                                                 { PUSH nat 101 ;
3811
                                                                   FAILWITH }
3812
                                                                 {} ;
3813
                                                               NIL (pair address
3814
                                                                         (list (pair
3815
                                                                                address
3816
                                                                                (pair
3817
                                                                                  nat
3818
                                                                                  nat)))) ;
3819
                                                               NIL (pair address
3820
                                                                         (pair nat nat)) ;
3821
                                                               DIG 4 ;
3822
                                                               PUSH nat 0 ;
3823
                                                               DIG 7 ;
3824
                                                               PAIR 3 ;
3825
                                                               CONS ;
3826
                                                               DIG 4 ;
3827
                                                               PAIR ;
3828
                                                               CONS ;
3829
                                                               MAP { DUP ;
3830
                                                                     CDR ;
3831
                                                                     MAP { DUP ;
3832
                                                                           GET 4 ;
3833
                                                                           DUP 2 ;
3834
                                                                           GET 3 ;
3835
                                                                           PAIR ;
3836
                                                                           SWAP ;
3837
                                                                           CAR ;
3838
                                                                           PAIR } ;
3839
                                                                     SWAP ;
3840
                                                                     CAR ;
3841
                                                                     PAIR } ;
3842
                                                               SWAP ;
3843
                                                               PUSH mutez 0 ;
3844
                                                               DIG 2 ;
3845
                                                               TRANSFER_TOKENS ;
3846
                                                               CONS }
3847
                                                             { DROP 5 ;
3848
                                                               PUSH nat 149 ;
3849
                                                               FAILWITH } } ;
3850
                                                       PUSH mutez 1 ;
3851
                                                       DUP 3 ;
3852
                                                       CAR ;
3853
                                                       MUL ;
3854
                                                       SENDER ;
3855
                                                       CONTRACT unit ;
3856
                                                       IF_NONE
3857
                                                         { PUSH nat 106 ; FAILWITH }
3858
                                                         {} ;
3859
                                                       SWAP ;
3860
                                                       UNIT ;
3861
                                                       TRANSFER_TOKENS ;
3862
                                                       CONS }
3863
                                                     { DUP 5 ;
3864
                                                       SELF_ADDRESS ;
3865
                                                       SENDER ;
3866
                                                       DUP 7 ;
3867
                                                       GET 9 ;
3868
                                                       DUP 8 ;
3869
                                                       GET 10 ;
3870
                                                       DIG 5 ;
3871
                                                       PAIR 6 ;
3872
                                                       UNPAIR 6 ;
3873
                                                       DIG 5 ;
3874
                                                       GET 21 ;
3875
                                                       DIG 3 ;
3876
                                                       GET ;
3877
                                                       IF_NONE
3878
                                                         { PUSH nat 131 ; FAILWITH }
3879
                                                         {} ;
3880
                                                       PUSH string "fa1.2" ;
3881
                                                       DUP 2 ;
3882
                                                       GET 4 ;
3883
                                                       COMPARE ;
3884
                                                       EQ ;
3885
                                                       IF
3886
                                                         { GET 3 ;
3887
                                                           CONTRACT %transfer (pair
3888
                                                                                (address %from)
3889
                                                                                (pair
3890
                                                                                  (address %to)
3891
                                                                                  (nat %value))) ;
3892
                                                           IF_NONE
3893
                                                             { PUSH nat 132 ; FAILWITH }
3894
                                                             {} ;
3895
                                                           PUSH mutez 0 ;
3896
                                                           DIG 3 ;
3897
                                                           DIG 5 ;
3898
                                                           DIG 5 ;
3899
                                                           PAIR 3 ;
3900
                                                           TRANSFER_TOKENS ;
3901
                                                           CONS }
3902
                                                         { PUSH string "fa2" ;
3903
                                                           DUP 2 ;
3904
                                                           GET 4 ;
3905
                                                           COMPARE ;
3906
                                                           EQ ;
3907
                                                           IF
3908
                                                             { GET 3 ;
3909
                                                               CONTRACT %transfer (list (pair
3910
                                                                                         address
3911
                                                                                         (list (pair
3912
                                                                                                address
3913
                                                                                                (pair
3914
                                                                                                  nat
3915
                                                                                                  nat))))) ;
3916
                                                               IF_NONE
3917
                                                                 { PUSH nat 101 ;
3918
                                                                   FAILWITH }
3919
                                                                 {} ;
3920
                                                               NIL (pair address
3921
                                                                         (list (pair
3922
                                                                                address
3923
                                                                                (pair
3924
                                                                                  nat
3925
                                                                                  nat)))) ;
3926
                                                               NIL (pair address
3927
                                                                         (pair nat nat)) ;
3928
                                                               DIG 4 ;
3929
                                                               PUSH nat 0 ;
3930
                                                               DIG 7 ;
3931
                                                               PAIR 3 ;
3932
                                                               CONS ;
3933
                                                               DIG 4 ;
3934
                                                               PAIR ;
3935
                                                               CONS ;
3936
                                                               MAP { DUP ;
3937
                                                                     CDR ;
3938
                                                                     MAP { DUP ;
3939
                                                                           GET 4 ;
3940
                                                                           DUP 2 ;
3941
                                                                           GET 3 ;
3942
                                                                           PAIR ;
3943
                                                                           SWAP ;
3944
                                                                           CAR ;
3945
                                                                           PAIR } ;
3946
                                                                     SWAP ;
3947
                                                                     CAR ;
3948
                                                                     PAIR } ;
3949
                                                               SWAP ;
3950
                                                               PUSH mutez 0 ;
3951
                                                               DIG 2 ;
3952
                                                               TRANSFER_TOKENS ;
3953
                                                               CONS }
3954
                                                             { DROP 5 ;
3955
                                                               PUSH nat 149 ;
3956
                                                               FAILWITH } } ;
3957
                                                       DUP 5 ;
3958
                                                       SENDER ;
3959
                                                       SELF_ADDRESS ;
3960
                                                       DUP 5 ;
3961
                                                       GET 6 ;
3962
                                                       DUP 6 ;
3963
                                                       CAR ;
3964
                                                       DIG 5 ;
3965
                                                       PAIR 6 ;
3966
                                                       UNPAIR 6 ;
3967
                                                       DIG 5 ;
3968
                                                       GET 21 ;
3969
                                                       DIG 3 ;
3970
                                                       GET ;
3971
                                                       IF_NONE
3972
                                                         { PUSH nat 131 ; FAILWITH }
3973
                                                         {} ;
3974
                                                       PUSH string "fa1.2" ;
3975
                                                       DUP 2 ;
3976
                                                       GET 4 ;
3977
                                                       COMPARE ;
3978
                                                       EQ ;
3979
                                                       IF
3980
                                                         { GET 3 ;
3981
                                                           CONTRACT %transfer (pair
3982
                                                                                (address %from)
3983
                                                                                (pair
3984
                                                                                  (address %to)
3985
                                                                                  (nat %value))) ;
3986
                                                           IF_NONE
3987
                                                             { PUSH nat 132 ; FAILWITH }
3988
                                                             {} ;
3989
                                                           PUSH mutez 0 ;
3990
                                                           DIG 3 ;
3991
                                                           DIG 5 ;
3992
                                                           DIG 5 ;
3993
                                                           PAIR 3 ;
3994
                                                           TRANSFER_TOKENS ;
3995
                                                           CONS }
3996
                                                         { PUSH string "fa2" ;
3997
                                                           DUP 2 ;
3998
                                                           GET 4 ;
3999
                                                           COMPARE ;
4000
                                                           EQ ;
4001
                                                           IF
4002
                                                             { GET 3 ;
4003
                                                               CONTRACT %transfer (list (pair
4004
                                                                                         address
4005
                                                                                         (list (pair
4006
                                                                                                address
4007
                                                                                                (pair
4008
                                                                                                  nat
4009
                                                                                                  nat))))) ;
4010
                                                               IF_NONE
4011
                                                                 { PUSH nat 101 ;
4012
                                                                   FAILWITH }
4013
                                                                 {} ;
4014
                                                               NIL (pair address
4015
                                                                         (list (pair
4016
                                                                                address
4017
                                                                                (pair
4018
                                                                                  nat
4019
                                                                                  nat)))) ;
4020
                                                               NIL (pair address
4021
                                                                         (pair nat nat)) ;
4022
                                                               DIG 4 ;
4023
                                                               PUSH nat 0 ;
4024
                                                               DIG 7 ;
4025
                                                               PAIR 3 ;
4026
                                                               CONS ;
4027
                                                               DIG 4 ;
4028
                                                               PAIR ;
4029
                                                               CONS ;
4030
                                                               MAP { DUP ;
4031
                                                                     CDR ;
4032
                                                                     MAP { DUP ;
4033
                                                                           GET 4 ;
4034
                                                                           DUP 2 ;
4035
                                                                           GET 3 ;
4036
                                                                           PAIR ;
4037
                                                                           SWAP ;
4038
                                                                           CAR ;
4039
                                                                           PAIR } ;
4040
                                                                     SWAP ;
4041
                                                                     CAR ;
4042
                                                                     PAIR } ;
4043
                                                               SWAP ;
4044
                                                               PUSH mutez 0 ;
4045
                                                               DIG 2 ;
4046
                                                               TRANSFER_TOKENS ;
4047
                                                               CONS }
4048
                                                             { DROP 5 ;
4049
                                                               PUSH nat 149 ;
4050
                                                               FAILWITH } } } } } ;
4051
                                           DUP 5 ;
4052
                                           DIG 5 ;
4053
                                           GET 13 ;
4054
                                           DIG 3 ;
4055
                                           DUP 6 ;
4056
                                           GET 10 ;
4057
                                           UPDATE 1 ;
4058
                                           DUP 6 ;
4059
                                           GET 5 ;
4060
                                           UPDATE 3 ;
4061
                                           DUP 6 ;
4062
                                           GET 7 ;
4063
                                           UPDATE 5 ;
4064
                                           DIG 5 ;
4065
                                           GET 9 ;
4066
                                           UPDATE 6 ;
4067
                                           SOME ;
4068
                                           DIG 4 ;
4069
                                           UPDATE ;
4070
                                           UPDATE 13 ;
4071
                                           SWAP ;
4072
                                           PAIR } } } } }
4073
                         { DUP 2 ;
4074
                           GET 27 ;
4075
                           SENDER ;
4076
                           COMPARE ;
4077
                           NEQ ;
4078
                           IF
4079
                             { SELF_ADDRESS ;
4080
                               DUP 3 ;
4081
                               DIG 3 ;
4082
                               GET 27 ;
4083
                               CONTRACT %callMultisig (pair
4084
                                                        (pair %entrypoint_signature
4085
                                                          (string %name)
4086
                                                          (pair (bytes %params)
4087
                                                                (address %source_contract)))
4088
                                                        (lambda %callback unit
4089
                                                                          (list operation))) ;
4090
                               IF_NONE
4091
                                 { SWAP ;
4092
                                   DIG 2 ;
4093
                                   DROP 2 ;
4094
                                   PUSH string "no call entrypoint" ;
4095
                                   FAILWITH }
4096
                                 { DUP 4 ;
4097
                                   PACK ;
4098
                                   SHA256 ;
4099
                                   SELF_ADDRESS ;
4100
                                   SWAP ;
4101
                                   PUSH string "updateOracleAddress" ;
4102
                                   PAIR 3 ;
4103
                                   SWAP ;
4104
                                   PUSH mutez 0 ;
4105
                                   LAMBDA
4106
                                     (pair (pair address address) unit)
4107
                                     (list operation)
4108
                                     { UNPAIR ;
4109
                                       UNPAIR ;
4110
                                       DIG 2 ;
4111
                                       DROP ;
4112
                                       CONTRACT %updateOracleAddress address ;
4113
                                       IF_NONE
4114
                                         { DROP ;
4115
                                           PUSH string "no updateOracleAddress entrypoint" ;
4116
                                           FAILWITH }
4117
                                         { NIL operation ;
4118
                                           SWAP ;
4119
                                           PUSH mutez 0 ;
4120
                                           DIG 3 ;
4121
                                           TRANSFER_TOKENS ;
4122
                                           CONS } } ;
4123
                                   DUP 7 ;
4124
                                   DUP 7 ;
4125
                                   PAIR ;
4126
                                   APPLY ;
4127
                                   DIG 5 ;
4128
                                   DIG 6 ;
4129
                                   DROP 2 ;
4130
                                   DIG 3 ;
4131
                                   PAIR ;
4132
                                   TRANSFER_TOKENS ;
4133
                                   NIL operation ;
4134
                                   SWAP ;
4135
                                   CONS } }
4136
                             { UPDATE 25 ; NIL operation } ;
4137
                           PAIR } } } } }
4138
         { IF_LEFT
4139
             { IF_LEFT
4140
                 { IF_LEFT
4141
                     { DUP 2 ;
4142
                       GET 27 ;
4143
                       SENDER ;
4144
                       COMPARE ;
4145
                       NEQ ;
4146
                       IF
4147
                         { SELF_ADDRESS ;
4148
                           DUP 3 ;
4149
                           DIG 3 ;
4150
                           GET 27 ;
4151
                           CONTRACT %callMultisig (pair
4152
                                                    (pair %entrypoint_signature
4153
                                                      (string %name)
4154
                                                      (pair (bytes %params)
4155
                                                            (address %source_contract)))
4156
                                                    (lambda %callback unit
4157
                                                                      (list operation))) ;
4158
                           IF_NONE
4159
                             { SWAP ;
4160
                               DIG 2 ;
4161
                               DROP 2 ;
4162
                               PUSH string "no call entrypoint" ;
4163
                               FAILWITH }
4164
                             { DUP 4 ;
4165
                               PACK ;
4166
                               SHA256 ;
4167
                               SELF_ADDRESS ;
4168
                               SWAP ;
4169
                               PUSH string "updateRoyalties" ;
4170
                               PAIR 3 ;
4171
                               SWAP ;
4172
                               PUSH mutez 0 ;
4173
                               LAMBDA
4174
                                 (pair (pair address nat) unit)
4175
                                 (list operation)
4176
                                 { UNPAIR ;
4177
                                   UNPAIR ;
4178
                                   DIG 2 ;
4179
                                   DROP ;
4180
                                   CONTRACT %updateRoyalties nat ;
4181
                                   IF_NONE
4182
                                     { DROP ;
4183
                                       PUSH string "no updateRoyalties entrypoint" ;
4184
                                       FAILWITH }
4185
                                     { NIL operation ;
4186
                                       SWAP ;
4187
                                       PUSH mutez 0 ;
4188
                                       DIG 3 ;
4189
                                       TRANSFER_TOKENS ;
4190
                                       CONS } } ;
4191
                               DUP 7 ;
4192
                               DUP 7 ;
4193
                               PAIR ;
4194
                               APPLY ;
4195
                               DIG 5 ;
4196
                               DIG 6 ;
4197
                               DROP 2 ;
4198
                               DIG 3 ;
4199
                               PAIR ;
4200
                               TRANSFER_TOKENS ;
4201
                               NIL operation ;
4202
                               SWAP ;
4203
                               CONS } }
4204
                         { UPDATE 15 ; NIL operation } }
4205
                     { DUP 2 ;
4206
                       GET 27 ;
4207
                       SENDER ;
4208
                       COMPARE ;
4209
                       NEQ ;
4210
                       IF
4211
                         { SELF_ADDRESS ;
4212
                           DUP 3 ;
4213
                           DIG 3 ;
4214
                           GET 27 ;
4215
                           CONTRACT %callMultisig (pair
4216
                                                    (pair %entrypoint_signature
4217
                                                      (string %name)
4218
                                                      (pair (bytes %params)
4219
                                                            (address %source_contract)))
4220
                                                    (lambda %callback unit
4221
                                                                      (list operation))) ;
4222
                           IF_NONE
4223
                             { SWAP ;
4224
                               DIG 2 ;
4225
                               DROP 2 ;
4226
                               PUSH string "no call entrypoint" ;
4227
                               FAILWITH }
4228
                             { DUP 4 ;
4229
                               PACK ;
4230
                               SHA256 ;
4231
                               SELF_ADDRESS ;
4232
                               SWAP ;
4233
                               PUSH string "updateRoyaltiesAddress" ;
4234
                               PAIR 3 ;
4235
                               SWAP ;
4236
                               PUSH mutez 0 ;
4237
                               LAMBDA
4238
                                 (pair (pair address address) unit)
4239
                                 (list operation)
4240
                                 { UNPAIR ;
4241
                                   UNPAIR ;
4242
                                   DIG 2 ;
4243
                                   DROP ;
4244
                                   CONTRACT %updateRoyaltiesAddress address ;
4245
                                   IF_NONE
4246
                                     { DROP ;
4247
                                       PUSH string "no updateRoyaltiesAddress entrypoint" ;
4248
                                       FAILWITH }
4249
                                     { NIL operation ;
4250
                                       SWAP ;
4251
                                       PUSH mutez 0 ;
4252
                                       DIG 3 ;
4253
                                       TRANSFER_TOKENS ;
4254
                                       CONS } } ;
4255
                               DUP 7 ;
4256
                               DUP 7 ;
4257
                               PAIR ;
4258
                               APPLY ;
4259
                               DIG 5 ;
4260
                               DIG 6 ;
4261
                               DROP 2 ;
4262
                               DIG 3 ;
4263
                               PAIR ;
4264
                               TRANSFER_TOKENS ;
4265
                               NIL operation ;
4266
                               SWAP ;
4267
                               CONS } }
4268
                         { UPDATE 3 ; NIL operation } } ;
4269
                   PAIR }
4270
                 { IF_LEFT
4271
                     { DUP 2 ;
4272
                       GET 19 ;
4273
                       IF
4274
                         { DROP 2 ; PUSH nat 117 ; FAILWITH }
4275
                         { DUP 2 ;
4276
                           GET 11 ;
4277
                           DUP 2 ;
4278
                           CAR ;
4279
                           GET ;
4280
                           IF_NONE { PUSH nat 103 ; FAILWITH } {} ;
4281
                           DUP ;
4282
                           CAR ;
4283
                           SENDER ;
4284
                           COMPARE ;
4285
                           NEQ ;
4286
                           IF
4287
                             { DROP 3 ; PUSH nat 122 ; FAILWITH }
4288
                             { DUP 2 ;
4289
                               CDR ;
4290
                               IF_LEFT
4291
                                 { IF_LEFT
4292
                                     { IF_LEFT
4293
                                         { DUP 2 ;
4294
                                           GET 15 ;
4295
                                           NOW ;
4296
                                           COMPARE ;
4297
                                           GE ;
4298
                                           DUP 3 ;
4299
                                           GET 7 ;
4300
                                           AND ;
4301
                                           DUP 3 ;
4302
                                           GET 7 ;
4303
                                           NOT ;
4304
                                           OR ;
4305
                                           IF
4306
                                             { DROP 4 ; PUSH nat 129 ; FAILWITH }
4307
                                             { DUP 4 ;
4308
                                               GET 11 ;
4309
                                               DUG 2 ;
4310
                                               INT ;
4311
                                               UPDATE 17 ;
4312
                                               SOME ;
4313
                                               DIG 2 ;
4314
                                               CAR ;
4315
                                               PAIR 3 ;
4316
                                               UNPAIR 3 ;
4317
                                               UPDATE ;
4318
                                               UPDATE 11 ;
4319
                                               NIL operation ;
4320
                                               PAIR } }
4321
                                         { DUP 2 ;
4322
                                           GET 15 ;
4323
                                           NOW ;
4324
                                           COMPARE ;
4325
                                           GE ;
4326
                                           DUP 3 ;
4327
                                           GET 7 ;
4328
                                           AND ;
4329
                                           IF
4330
                                             { DROP 4 ; PUSH nat 126 ; FAILWITH }
4331
                                             { DUP 4 ;
4332
                                               DIG 4 ;
4333
                                               GET 11 ;
4334
                                               DIG 3 ;
4335
                                               DIG 3 ;
4336
                                               UPDATE 13 ;
4337
                                               SOME ;
4338
                                               DIG 3 ;
4339
                                               CAR ;
4340
                                               UPDATE ;
4341
                                               UPDATE 11 ;
4342
                                               NIL operation ;
4343
                                               PAIR } } }
4344
                                     { IF_LEFT
4345
                                         { DUP 4 ;
4346
                                           DIG 4 ;
4347
                                           GET 11 ;
4348
                                           DIG 3 ;
4349
                                           DIG 3 ;
4350
                                           UPDATE 21 ;
4351
                                           PUSH bool True ;
4352
                                           UPDATE 9 ;
4353
                                           SOME ;
4354
                                           DIG 3 ;
4355
                                           CAR ;
4356
                                           UPDATE ;
4357
                                           UPDATE 11 ;
4358
                                           NIL operation ;
4359
                                           PAIR }
4360
                                         { DUP 2 ;
4361
                                           GET 15 ;
4362
                                           NOW ;
4363
                                           COMPARE ;
4364
                                           GE ;
4365
                                           DUP 3 ;
4366
                                           GET 7 ;
4367
                                           AND ;
4368
                                           DUP 3 ;
4369
                                           GET 7 ;
4370
                                           NOT ;
4371
                                           OR ;
4372
                                           IF
4373
                                             { DROP 4 ; PUSH nat 130 ; FAILWITH }
4374
                                             { DUP 4 ;
4375
                                               DIG 4 ;
4376
                                               GET 11 ;
4377
                                               DIG 3 ;
4378
                                               DIG 3 ;
4379
                                               UPDATE 11 ;
4380
                                               SOME ;
4381
                                               DIG 3 ;
4382
                                               CAR ;
4383
                                               UPDATE ;
4384
                                               UPDATE 11 ;
4385
                                               NIL operation ;
4386
                                               PAIR } } } }
4387
                                 { DUP ;
4388
                                   CDR ;
4389
                                   DUP 2 ;
4390
                                   CAR ;
4391
                                   COMPARE ;
4392
                                   GE ;
4393
                                   IF
4394
                                     { DROP 4 ; PUSH nat 120 ; FAILWITH }
4395
                                     { DUP 2 ;
4396
                                       GET 15 ;
4397
                                       NOW ;
4398
                                       COMPARE ;
4399
                                       GE ;
4400
                                       DUP 3 ;
4401
                                       GET 7 ;
4402
                                       AND ;
4403
                                       IF
4404
                                         { DROP 4 ; PUSH nat 126 ; FAILWITH }
4405
                                         { DUP 4 ;
4406
                                           DIG 4 ;
4407
                                           GET 11 ;
4408
                                           DIG 3 ;
4409
                                           DUP 4 ;
4410
                                           CAR ;
4411
                                           UPDATE 15 ;
4412
                                           DIG 3 ;
4413
                                           CDR ;
4414
                                           UPDATE 19 ;
4415
                                           SOME ;
4416
                                           DIG 3 ;
4417
                                           CAR ;
4418
                                           UPDATE ;
4419
                                           UPDATE 11 ;
4420
                                           NIL operation ;
4421
                                           PAIR } } } } } }
4422
                     { DUP 2 ;
4423
                       GET 27 ;
4424
                       SENDER ;
4425
                       COMPARE ;
4426
                       NEQ ;
4427
                       IF
4428
                         { SELF_ADDRESS ;
4429
                           DUP 3 ;
4430
                           DIG 3 ;
4431
                           GET 27 ;
4432
                           CONTRACT %callMultisig (pair
4433
                                                    (pair %entrypoint_signature
4434
                                                      (string %name)
4435
                                                      (pair (bytes %params)
4436
                                                            (address %source_contract)))
4437
                                                    (lambda %callback unit
4438
                                                                      (list operation))) ;
4439
                           IF_NONE
4440
                             { SWAP ;
4441
                               DIG 2 ;
4442
                               DROP 2 ;
4443
                               PUSH string "no call entrypoint" ;
4444
                               FAILWITH }
4445
                             { DUP 4 ;
4446
                               PACK ;
4447
                               SHA256 ;
4448
                               SELF_ADDRESS ;
4449
                               SWAP ;
4450
                               PUSH string "updateTreasuryAddress" ;
4451
                               PAIR 3 ;
4452
                               SWAP ;
4453
                               PUSH mutez 0 ;
4454
                               LAMBDA
4455
                                 (pair (pair address address) unit)
4456
                                 (list operation)
4457
                                 { UNPAIR ;
4458
                                   UNPAIR ;
4459
                                   DIG 2 ;
4460
                                   DROP ;
4461
                                   CONTRACT %updateTreasuryAddress address ;
4462
                                   IF_NONE
4463
                                     { DROP ;
4464
                                       PUSH string "no updateTreasuryAddress entrypoint" ;
4465
                                       FAILWITH }
4466
                                     { NIL operation ;
4467
                                       SWAP ;
4468
                                       PUSH mutez 0 ;
4469
                                       DIG 3 ;
4470
                                       TRANSFER_TOKENS ;
4471
                                       CONS } } ;
4472
                               DUP 7 ;
4473
                               DUP 7 ;
4474
                               PAIR ;
4475
                               APPLY ;
4476
                               DIG 5 ;
4477
                               DIG 6 ;
4478
                               DROP 2 ;
4479
                               DIG 3 ;
4480
                               PAIR ;
4481
                               TRANSFER_TOKENS ;
4482
                               NIL operation ;
4483
                               SWAP ;
4484
                               CONS } }
4485
                         { UPDATE 29 ; NIL operation } ;
4486
                       PAIR } } }
4487
             { IF_LEFT
4488
                 { DUP ;
4489
                   GET 4 ;
4490
                   DUP 2 ;
4491
                   CAR ;
4492
                   SENDER ;
4493
                   DUP 4 ;
4494
                   GET 3 ;
4495
                   PAIR 4 ;
4496
                   DUP 3 ;
4497
                   GET 9 ;
4498
                   DUP 2 ;
4499
                   MEM ;
4500
                   NOT ;
4501
                   IF
4502
                     { DROP 3 ; PUSH nat 141 ; FAILWITH }
4503
                     { NIL operation ;
4504
                       NIL (pair address (list (pair address (pair nat nat)))) ;
4505
                       NIL (pair address (pair nat nat)) ;
4506
                       PUSH nat 1 ;
4507
                       DUP 6 ;
4508
                       CAR ;
4509
                       SENDER ;
4510
                       PAIR 3 ;
4511
                       CONS ;
4512
                       SELF_ADDRESS ;
4513
                       PAIR ;
4514
                       CONS ;
4515
                       DIG 3 ;
4516
                       GET 4 ;
4517
                       CONTRACT %transfer (list (pair address
4518
                                                     (list (pair address (pair nat nat))))) ;
4519
                       IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
4520
                       SWAP ;
4521
                       MAP { DUP ;
4522
                             CDR ;
4523
                             MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ;
4524
                             SWAP ;
4525
                             CAR ;
4526
                             PAIR } ;
4527
                       SWAP ;
4528
                       PUSH mutez 0 ;
4529
                       DIG 2 ;
4530
                       TRANSFER_TOKENS ;
4531
                       CONS ;
4532
                       DUP 3 ;
4533
                       DIG 3 ;
4534
                       GET 9 ;
4535
                       NONE (pair (pair (pair timestamp nat) (pair address timestamp))
4536
                                  string) ;
4537
                       DIG 4 ;
4538
                       UPDATE ;
4539
                       UPDATE 9 ;
4540
                       SWAP ;
4541
                       PAIR } }
4542
                 { UNPAIR ;
4543
                   SENDER ;
4544
                   PAIR 3 ;
4545
                   DUP 2 ;
4546
                   GET 13 ;
4547
                   DUP 2 ;
4548
                   GET ;
4549
                   IF_NONE
4550
                     { DROP 2 ; PUSH nat 116 ; FAILWITH }
4551
                     { DUP 3 ;
4552
                       SENDER ;
4553
                       SELF_ADDRESS ;
4554
                       DUP 4 ;
4555
                       GET 6 ;
4556
                       DIG 4 ;
4557
                       CAR ;
4558
                       NIL operation ;
4559
                       PAIR 6 ;
4560
                       UNPAIR 6 ;
4561
                       PUSH nat 0 ;
4562
                       DUP 3 ;
4563
                       COMPARE ;
4564
                       GT ;
4565
                       IF
4566
                         { PUSH string "XTZ" ;
4567
                           DUP 4 ;
4568
                           COMPARE ;
4569
                           EQ ;
4570
                           IF
4571
                             { DIG 2 ;
4572
                               DIG 3 ;
4573
                               DIG 5 ;
4574
                               DROP 3 ;
4575
                               PUSH mutez 1 ;
4576
                               DIG 2 ;
4577
                               MUL ;
4578
                               DIG 2 ;
4579
                               CONTRACT unit ;
4580
                               IF_NONE { PUSH nat 106 ; FAILWITH } {} ;
4581
                               SWAP ;
4582
                               UNIT ;
4583
                               TRANSFER_TOKENS ;
4584
                               CONS }
4585
                             { DIG 5 ;
4586
                               GET 21 ;
4587
                               DIG 3 ;
4588
                               GET ;
4589
                               IF_NONE { PUSH nat 131 ; FAILWITH } {} ;
4590
                               PUSH string "fa1.2" ;
4591
                               DUP 2 ;
4592
                               GET 4 ;
4593
                               COMPARE ;
4594
                               EQ ;
4595
                               IF
4596
                                 { GET 3 ;
4597
                                   CONTRACT %transfer (pair (address %from)
4598
                                                            (pair (address %to)
4599
                                                                  (nat %value))) ;
4600
                                   IF_NONE { PUSH nat 132 ; FAILWITH } {} ;
4601
                                   PUSH mutez 0 ;
4602
                                   DIG 3 ;
4603
                                   DIG 5 ;
4604
                                   DIG 5 ;
4605
                                   PAIR 3 ;
4606
                                   TRANSFER_TOKENS ;
4607
                                   CONS }
4608
                                 { PUSH string "fa2" ;
4609
                                   DUP 2 ;
4610
                                   GET 4 ;
4611
                                   COMPARE ;
4612
                                   EQ ;
4613
                                   IF
4614
                                     { GET 3 ;
4615
                                       CONTRACT %transfer (list (pair address
4616
                                                                     (list (pair address
4617
                                                                                (pair
4618
                                                                                  nat
4619
                                                                                  nat))))) ;
4620
                                       IF_NONE { PUSH nat 101 ; FAILWITH } {} ;
4621
                                       NIL (pair address
4622
                                                 (list (pair address (pair nat nat)))) ;
4623
                                       NIL (pair address (pair nat nat)) ;
4624
                                       DIG 4 ;
4625
                                       PUSH nat 0 ;
4626
                                       DIG 7 ;
4627
                                       PAIR 3 ;
4628
                                       CONS ;
4629
                                       DIG 4 ;
4630
                                       PAIR ;
4631
                                       CONS ;
4632
                                       MAP { DUP ;
4633
                                             CDR ;
4634
                                             MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ;
4635
                                             SWAP ;
4636
                                             CAR ;
4637
                                             PAIR } ;
4638
                                       SWAP ;
4639
                                       PUSH mutez 0 ;
4640
                                       DIG 2 ;
4641
                                       TRANSFER_TOKENS ;
4642
                                       CONS }
4643
                                     { DROP 5 ; PUSH nat 149 ; FAILWITH } } } }
4644
                         { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ;
4645
                       DUP 3 ;
4646
                       DIG 3 ;
4647
                       GET 13 ;
4648
                       NONE (pair nat (pair timestamp (pair timestamp string))) ;
4649
                       DIG 4 ;
4650
                       UPDATE ;
4651
                       UPDATE 13 ;
4652
                       SWAP ;
4653
                       PAIR } } } } }