x
861
1754
{ parameter (or (or (or (pair %ask (pair %token (address %address) (nat %token_id)) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (nat %editions) (pair (map %shares address nat) (pair (option %start_time timestamp) (pair (option %expiry_time timestamp) (pair (nat %referral_bonus) (option %condition (pair (address %address) (bytes %id))))))))))) (or (pair %ask_gallery (pair %token (address %address) (nat %token_id)) (pair (nat %exhibition_id) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (nat %editions) (pair (map %shares address nat) (pair (option %start_time timestamp) (pair (option %expiry_time timestamp) (pair (nat %referral_bonus) (option %condition (pair (address %address) (bytes %id)))))))))))) (unit %default))) (or (or (unit %delegate) (pair %fulfill_ask (nat %ask_id) (pair (nat %amount) (pair (option %proxy_for address) (pair (option %condition_extra bytes) (map %referrers address nat)))))) (or (pair %fulfill_ask_bulk (pair (map %asks nat (pair (nat %amount) (option %condition_extra bytes))) (bool %atomic)) (pair (option %proxy_for address) (map %referrers address nat))) (pair %fulfill_offer (nat %offer_id) (pair (option %token_id nat) (option %condition_extra bytes)))))) (or (or (or (pair %fulfill_offer_bulk (bool %atomic) (map %offers nat (pair (option %condition_extra bytes) (option %token_id nat)))) (pair %fulfill_offer_gallery (nat %offer_id) (pair (nat %exhibition_id) (pair (option %token_id nat) (pair (option %condition_extra bytes) (option %price_minimum (map (or (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) nat))))))) (or (pair %offer (pair %token (address %address) (option %token_id nat)) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (map %shares address nat) (pair (option %expiry_time timestamp) (pair (option %target address) (pair (map %referrers address nat) (pair (option %condition (pair (address %address) (bytes %id))) (option %proxy_for address))))))))) (nat %retract_ask))) (or (or (nat %retract_offer) (address %update_fee_sharing_registry)) (or (address %update_gallery_factory) (address %update_permission_module))))) ; storage (pair (pair (pair (big_map %asks nat (pair (address %creator) (pair (pair %token (address %address) (nat %token_id)) (pair (option %exhibition_id nat) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (nat %editions) (pair (map %shares address nat) (pair (option %start_time timestamp) (pair (option %expiry_time timestamp) (pair (nat %referral_bonus) (pair (nat %platform_fee) (option %condition (pair (address %address) (bytes %id))))))))))))))) (address %fee_sharing_registry)) (pair (address %gallery_factory) (big_map %metadata string bytes))) (pair (pair (nat %next_ask_id) (nat %next_offer_id)) (pair (big_map %offers nat (pair (address %creator) (pair (pair %token (address %address) (option %token_id nat)) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (map %shares address nat) (pair (option %expiry_time timestamp) (pair (nat %platform_fee) (pair (option %target address) (pair (map %referrers address nat) (option %condition (pair (address %address) (bytes %id))))))))))))) (address %permission_module)))) ; code { LAMBDA (pair (pair (map address (map address (map address nat))) (pair nat address)) (pair address (pair (map address nat) address))) (map address (map address (map address nat))) { DUP ; CAR ; CAR ; PUSH nat 0 ; DUP 3 ; GET 5 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 6 ; CAR ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 223 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP 4 ; DUP 6 ; GET 3 ; MEM ; IF {} { DIG 3 ; PUSH (option (map address (map address nat))) (Some {}) ; DUP 6 ; GET 3 ; UPDATE ; DUG 3 } ; DUP 4 ; DUP 6 ; GET 3 ; GET ; IF_NONE { PUSH int 229 ; FAILWITH } {} ; DUP 6 ; CAR ; GET 4 ; MEM ; IF {} { DIG 3 ; DUP ; DUP 6 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 230 ; FAILWITH } {} ; PUSH (option (map address nat)) (Some {}) ; DUP 8 ; CAR ; GET 4 ; UPDATE ; SOME ; SWAP ; UPDATE ; DUG 3 } ; DUP 4 ; DUP 6 ; GET 3 ; GET ; IF_NONE { PUSH int 231 ; FAILWITH } {} ; DUP 6 ; CAR ; GET 4 ; GET ; IF_NONE { PUSH int 231 ; FAILWITH } {} ; DUP 3 ; CAR ; MEM ; IF { DIG 3 ; DUP ; DUP 6 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 232 ; FAILWITH } {} ; DUP ; DUP 8 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 232 ; FAILWITH } {} ; DUP ; DIG 7 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 232 ; FAILWITH } {} ; DIG 7 ; ADD ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } { DIG 3 ; DUP ; DUP 6 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 234 ; FAILWITH } {} ; DUP ; DUP 8 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 234 ; FAILWITH } {} ; DIG 5 ; SOME ; DIG 6 ; CAR ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } } { DROP 2 } } ; DUP ; DUP 4 ; CAR ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 236 ; FAILWITH } {} ; DUP 4 ; CAR ; GET 3 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; MEM ; IF {} { SWAP ; PUSH (option (map address (map address nat))) (Some {}) ; DUP 4 ; GET 3 ; UPDATE ; SWAP } ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; GET ; IF_NONE { PUSH int 242 ; FAILWITH } {} ; DUP 4 ; CAR ; GET 4 ; MEM ; IF {} { SWAP ; DUP ; DUP 4 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 243 ; FAILWITH } {} ; PUSH (option (map address nat)) (Some {}) ; DUP 6 ; CAR ; GET 4 ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; GET ; IF_NONE { PUSH int 244 ; FAILWITH } {} ; DUP 4 ; CAR ; GET 4 ; GET ; IF_NONE { PUSH int 244 ; FAILWITH } {} ; DUP 4 ; GET 6 ; MEM ; IF { SWAP ; DUP ; DUP 4 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 245 ; FAILWITH } {} ; DUP ; DUP 6 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 245 ; FAILWITH } {} ; DUP ; DIG 7 ; GET 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 245 ; FAILWITH } {} ; DIG 7 ; ADD ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } { SWAP ; DUP ; DUP 4 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 247 ; FAILWITH } {} ; DUP ; DUP 6 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 247 ; FAILWITH } {} ; DIG 5 ; SOME ; DIG 6 ; GET 6 ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } } { DROP 2 ; SWAP ; DROP } } ; SWAP ; LAMBDA (pair (pair (map address (map nat (map address (map address nat)))) (pair nat address)) (pair (pair address nat) (pair (map address nat) address))) (map address (map nat (map address (map address nat)))) { DUP ; CAR ; CAR ; PUSH nat 0 ; DUP 3 ; GET 5 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 6 ; CAR ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 173 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP 4 ; DUP 6 ; GET 3 ; CAR ; MEM ; IF {} { DIG 3 ; PUSH (option (map nat (map address (map address nat)))) (Some {}) ; DUP 6 ; GET 3 ; CAR ; UPDATE ; DUG 3 } ; DUP 4 ; DUP 6 ; GET 3 ; CAR ; GET ; IF_NONE { PUSH int 179 ; FAILWITH } {} ; DUP 6 ; GET 3 ; CDR ; MEM ; IF {} { DIG 3 ; DUP ; DUP 6 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 180 ; FAILWITH } {} ; PUSH (option (map address (map address nat))) (Some {}) ; DUP 8 ; GET 3 ; CDR ; UPDATE ; SOME ; SWAP ; UPDATE ; DUG 3 } ; DUP 4 ; DUP 6 ; GET 3 ; CAR ; GET ; IF_NONE { PUSH int 182 ; FAILWITH } {} ; DUP 6 ; GET 3 ; CDR ; GET ; IF_NONE { PUSH int 182 ; FAILWITH } {} ; DUP 6 ; CAR ; GET 4 ; MEM ; IF {} { DIG 3 ; DUP ; DUP 6 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 184 ; FAILWITH } {} ; DUP ; DUP 8 ; GET 3 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 184 ; FAILWITH } {} ; PUSH (option (map address nat)) (Some {}) ; DUP 10 ; CAR ; GET 4 ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; DUG 3 } ; DUP 4 ; DUP 6 ; GET 3 ; CAR ; GET ; IF_NONE { PUSH int 186 ; FAILWITH } {} ; DUP 6 ; GET 3 ; CDR ; GET ; IF_NONE { PUSH int 186 ; FAILWITH } {} ; DUP 6 ; CAR ; GET 4 ; GET ; IF_NONE { PUSH int 186 ; FAILWITH } {} ; DUP 3 ; CAR ; MEM ; IF { DIG 3 ; DUP ; DUP 6 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; DUP ; DUP 8 ; GET 3 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; DUP ; DUP 10 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; DUP ; DIG 9 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; DIG 9 ; ADD ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } { DIG 3 ; DUP ; DUP 6 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 194 ; FAILWITH } {} ; DUP ; DUP 8 ; GET 3 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 194 ; FAILWITH } {} ; DUP ; DUP 10 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 194 ; FAILWITH } {} ; DIG 7 ; SOME ; DIG 8 ; CAR ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } } { DROP 2 } } ; DUP ; DUP 4 ; CAR ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 198 ; FAILWITH } {} ; DUP 4 ; CAR ; GET 3 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; CAR ; MEM ; IF {} { SWAP ; PUSH (option (map nat (map address (map address nat)))) (Some {}) ; DUP 4 ; GET 3 ; CAR ; UPDATE ; SWAP } ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; CAR ; GET ; IF_NONE { PUSH int 204 ; FAILWITH } {} ; DUP 4 ; GET 3 ; CDR ; MEM ; IF {} { SWAP ; DUP ; DUP 4 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 205 ; FAILWITH } {} ; PUSH (option (map address (map address nat))) (Some {}) ; DUP 6 ; GET 3 ; CDR ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; CAR ; GET ; IF_NONE { PUSH int 206 ; FAILWITH } {} ; DUP 4 ; GET 3 ; CDR ; GET ; IF_NONE { PUSH int 206 ; FAILWITH } {} ; DUP 4 ; CAR ; GET 4 ; MEM ; IF {} { SWAP ; DUP ; DUP 4 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 207 ; FAILWITH } {} ; DUP ; DUP 6 ; GET 3 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 207 ; FAILWITH } {} ; PUSH (option (map address nat)) (Some {}) ; DUP 8 ; CAR ; GET 4 ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP } ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; CAR ; GET ; IF_NONE { PUSH int 209 ; FAILWITH } {} ; DUP 4 ; GET 3 ; CDR ; GET ; IF_NONE { PUSH int 209 ; FAILWITH } {} ; DUP 4 ; CAR ; GET 4 ; GET ; IF_NONE { PUSH int 209 ; FAILWITH } {} ; DUP 4 ; GET 6 ; MEM ; IF { SWAP ; DUP ; DUP 4 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 211 ; FAILWITH } {} ; DUP ; DUP 6 ; GET 3 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 211 ; FAILWITH } {} ; DUP ; DUP 8 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 211 ; FAILWITH } {} ; DUP ; DIG 9 ; GET 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 211 ; FAILWITH } {} ; DIG 9 ; ADD ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } { SWAP ; DUP ; DUP 4 ; GET 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 213 ; FAILWITH } {} ; DUP ; DUP 6 ; GET 3 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 213 ; FAILWITH } {} ; DUP ; DUP 8 ; CAR ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 213 ; FAILWITH } {} ; DIG 7 ; SOME ; DIG 8 ; GET 6 ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } } { DROP 2 ; SWAP ; DROP } } ; SWAP ; LAMBDA (pair (pair (map address (map nat (map address (map address nat)))) nat) (pair address (pair (pair address nat) address))) (map address (map nat (map address (map address nat)))) { DUP ; CAR ; CAR ; DUP ; DUP 3 ; GET 5 ; CAR ; MEM ; IF {} { PUSH (option (map nat (map address (map address nat)))) (Some {}) ; DUP 3 ; GET 5 ; CAR ; UPDATE } ; DUP ; DUP 3 ; GET 5 ; CAR ; GET ; IF_NONE { PUSH int 156 ; FAILWITH } {} ; DUP 3 ; GET 5 ; CDR ; MEM ; IF {} { DUP ; DUP 3 ; GET 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 157 ; FAILWITH } {} ; PUSH (option (map address (map address nat))) (Some {}) ; DUP 5 ; GET 5 ; CDR ; UPDATE ; SOME ; SWAP ; UPDATE } ; DUP ; DUP 3 ; GET 5 ; CAR ; GET ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 3 ; GET 5 ; CDR ; GET ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 3 ; GET 3 ; MEM ; IF {} { DUP ; DUP 3 ; GET 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 159 ; FAILWITH } {} ; DUP ; DUP 5 ; GET 5 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 159 ; FAILWITH } {} ; PUSH (option (map address nat)) (Some {}) ; DUP 7 ; GET 3 ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } ; DUP ; DUP 3 ; GET 5 ; CAR ; GET ; IF_NONE { PUSH int 160 ; FAILWITH } {} ; DUP 3 ; GET 5 ; CDR ; GET ; IF_NONE { PUSH int 160 ; FAILWITH } {} ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH int 160 ; FAILWITH } {} ; DUP 3 ; GET 6 ; MEM ; IF { DUP ; DUP 3 ; GET 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 161 ; FAILWITH } {} ; DUP ; DUP 5 ; GET 5 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 161 ; FAILWITH } {} ; DUP ; DUP 7 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 161 ; FAILWITH } {} ; DUP ; DUP 9 ; GET 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 161 ; FAILWITH } {} ; DIG 9 ; CAR ; CDR ; ADD ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } { DUP ; DUP 3 ; GET 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 163 ; FAILWITH } {} ; DUP ; DUP 5 ; GET 5 ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 163 ; FAILWITH } {} ; DUP ; DUP 7 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 163 ; FAILWITH } {} ; DUP 8 ; CAR ; CDR ; SOME ; DIG 8 ; GET 6 ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE ; SOME ; SWAP ; UPDATE } } ; SWAP ; LAMBDA (pair (pair (pair nat address) (pair address (pair address nat))) (pair (list operation) (pair (pair (pair (big_map nat (pair address (pair (pair address nat) (pair (option nat) (pair (or address (or (pair address nat) unit)) (pair nat (pair nat (pair (map address nat) (pair (option timestamp) (pair (option timestamp) (pair nat (pair nat (option (pair address bytes)))))))))))))) address) (pair address (big_map string bytes))) (pair (pair nat nat) (pair (big_map nat (pair address (pair (pair address (option nat)) (pair (or address (or (pair address nat) unit)) (pair nat (pair (map address nat) (pair (option timestamp) (pair nat (pair (option address) (pair (map address nat) (option (pair address bytes)))))))))))) address))))) (pair unit (pair (list operation) (pair (pair (pair (big_map nat (pair address (pair (pair address nat) (pair (option nat) (pair (or address (or (pair address nat) unit)) (pair nat (pair nat (pair (map address nat) (pair (option timestamp) (pair (option timestamp) (pair nat (pair nat (option (pair address bytes)))))))))))))) address) (pair address (big_map string bytes))) (pair (pair nat nat) (pair (big_map nat (pair address (pair (pair address (option nat)) (pair (or address (or (pair address nat) unit)) (pair nat (pair (map address nat) (pair (option timestamp) (pair nat (pair (option address) (pair (map address nat) (option (pair address bytes)))))))))))) address))))) { UNPAIR 3 ; DUP ; DUG 2 ; CAR ; CDR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 336 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP ; CAR ; CAR ; SWAP ; DUP ; GET 6 ; SWAP ; DUP ; DUG 8 ; GET 5 ; PAIR 3 ; CONS ; DIG 5 ; GET 3 ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; UNIT ; PAIR 3 } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { DUP ; GET 7 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_NO_ASKS" ; FAILWITH } ; DUP ; GET 3 ; IF_LEFT { DROP ; DUP ; GET 5 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_MIN_0_FA12" ; FAILWITH } } { IF_LEFT { DROP ; DUP ; GET 5 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_MIN_0_FA2" ; FAILWITH } } { DROP } } ; DUP ; GET 9 ; SIZE ; PUSH nat 100 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "R_TOO_MANY_SHARES" ; FAILWITH } ; DUP ; GET 9 ; PUSH nat 0 ; SWAP ; ITER { CDR ; ADD } ; DUP 3 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; PUSH nat 10000 ; SUB ; ISNAT ; IF_NONE { PUSH int 28 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; COMPARE ; LE ; IF {} { PUSH string "R_INVALID_SHARES_TOTAL" ; FAILWITH } ; DUP 3 ; CAR ; CAR ; CDR ; DUP 3 ; GET 15 ; VIEW "is_valid_referral_fee_level" bool ; IF_NONE { PUSH int 156 ; FAILWITH } {} ; IF {} { PUSH string "M_INVALID_R_FEE" ; FAILWITH } ; DUP 3 ; UNPAIR ; UNPAIR ; UNPAIR ; DUP 6 ; GET 16 ; DUP 8 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DIG 7 ; DUP ; GET 15 ; SWAP ; DUP ; GET 13 ; SWAP ; DUP ; GET 11 ; SWAP ; DUP ; GET 9 ; SWAP ; DUP ; GET 7 ; SWAP ; DUP ; GET 5 ; SWAP ; DUP ; DUG 14 ; GET 3 ; NONE nat ; DUP 16 ; CAR ; SENDER ; PAIR 12 ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 6 ; DROP ; SOME ; DIG 5 ; GET 3 ; CAR ; UPDATE ; PAIR ; PAIR ; SWAP ; UNPAIR ; UNPAIR ; PUSH nat 1 ; ADD ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; SENDER ; VIEW "is_gallery" bool ; IF_NONE { PUSH string "invalid_view" ; FAILWITH } {} ; IF {} { PUSH string "WrongCondition: sp.view(\"is_gallery\", sp.sender, self.data.gallery_factory, sp.TBool).open_some(message = 'invalid_view')" ; FAILWITH } ; DUP ; GET 9 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_NO_ASKS" ; FAILWITH } ; DUP ; GET 5 ; IF_LEFT { DROP ; DUP ; GET 7 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_MIN_0_FA12" ; FAILWITH } } { IF_LEFT { DROP ; DUP ; GET 7 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_MIN_0_FA2" ; FAILWITH } } { DROP } } ; DUP ; GET 11 ; SIZE ; PUSH nat 100 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "R_TOO_MANY_SHARES" ; FAILWITH } ; DUP ; GET 11 ; PUSH nat 0 ; SWAP ; ITER { CDR ; ADD } ; DUP 3 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; PUSH nat 10000 ; SUB ; ISNAT ; IF_NONE { PUSH int 28 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; COMPARE ; LE ; IF {} { PUSH string "R_INVALID_SHARES_TOTAL" ; FAILWITH } ; DUP 3 ; CAR ; CAR ; CDR ; DUP 3 ; GET 17 ; VIEW "is_valid_referral_fee_level" bool ; IF_NONE { PUSH int 156 ; FAILWITH } {} ; IF {} { PUSH string "M_INVALID_R_FEE" ; FAILWITH } ; DUP 3 ; UNPAIR ; UNPAIR ; UNPAIR ; DUP 6 ; GET 18 ; DUP 8 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DIG 7 ; DUP ; GET 17 ; SWAP ; DUP ; GET 15 ; SWAP ; DUP ; GET 13 ; SWAP ; DUP ; GET 11 ; SWAP ; DUP ; GET 9 ; SWAP ; DUP ; GET 7 ; SWAP ; DUP ; GET 5 ; SWAP ; DUP ; DUG 15 ; GET 3 ; SOME ; DUP 16 ; CAR ; SENDER ; PAIR 12 ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 6 ; DROP ; SOME ; DIG 5 ; GET 3 ; CAR ; UPDATE ; PAIR ; PAIR ; SWAP ; UNPAIR ; UNPAIR ; PUSH nat 1 ; ADD ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { DROP ; SWAP ; DROP ; DUP ; GET 6 ; NIL operation ; SWAP ; UNIT ; VIEW "get_baking_reward_collector" address ; IF_NONE { PUSH int 167 ; FAILWITH } {} ; CONTRACT unit ; IF_NONE { PUSH int 181 ; FAILWITH } {} ; AMOUNT ; UNIT ; TRANSFER_TOKENS ; CONS } } } { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { DROP ; SWAP ; DROP ; DUP ; GET 6 ; NIL operation ; SWAP ; UNIT ; VIEW "get_delegate" key_hash ; IF_NONE { PUSH int 176 ; FAILWITH } {} ; SOME ; SET_DELEGATE ; CONS } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 625 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF {} { PUSH string "M_NO_SELF_FULFILL" ; FAILWITH } ; PUSH nat 0 ; DUP 3 ; GET 3 ; COMPARE ; GT ; IF {} { PUSH string "M_LT_MIN_AMOUNT" ; FAILWITH } ; DUP ; GET 17 ; IF_NONE {} { NOW ; COMPARE ; LT ; IF {} { PUSH string "M_EXPIRED" ; FAILWITH } } ; DUP ; GET 15 ; IF_NONE {} { NOW ; COMPARE ; GE ; IF {} { PUSH string "M_NOT_STARTED" ; FAILWITH } } ; SENDER ; DUP 3 ; GET 5 ; IF_NONE {} { SWAP ; DROP } ; DUP 3 ; GET 3 ; DUP 3 ; GET 11 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DUP 3 ; GET 7 ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } ; IF { DUP ; DUP 4 ; GET 9 ; MUL ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; COMPARE ; GE ; IF {} { PUSH string "M_TEZ_AMOUNT_MISMATCH" ; FAILWITH } } {} ; DUP 3 ; GET 22 ; IF_NONE { NIL operation } { DUP ; CAR ; CONTRACT %enforce_conditions (list (pair (pair (nat %amount) (pair (address %claimer) (bytes %condition_id))) (pair (address %creator) (pair (option %extra bytes) (pair %token (address %address) (nat %token_id)))))) ; IF_NONE { PUSH int 517 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat)))) ; DUP 8 ; GET 3 ; DUP 10 ; GET 7 ; PAIR ; DUP 9 ; CAR ; PAIR ; DIG 5 ; CDR ; DUP 8 ; PAIR ; DUP 7 ; PAIR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } ; DUP 4 ; GET 3 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 305 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 6 ; DUP 9 ; GET 3 ; CDR ; DUP 9 ; PAIR 3 ; CONS ; DUP 8 ; CAR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DUP 6 ; GET 6 ; UNIT ; VIEW "get_treasury" address ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 7 ; CAR ; CAR ; CDR ; DUP 7 ; GET 8 ; DIG 6 ; DUP ; GET 19 ; SWAP ; DUP ; DUG 8 ; GET 21 ; PAIR 3 ; VIEW "get_share_fee" (map address nat) ; IF_NONE { PUSH int 136 ; FAILWITH } {} ; DUP 6 ; GET 21 ; PUSH nat 0 ; DIG 2 ; DUP ; DUP ; DUG 4 ; ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ; PUSH nat 0 ; DUP 10 ; GET 19 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 47 ; FAILWITH } {} ; DUG 2 } {} ; DUP 9 ; GET 13 ; ITER { DUP ; CDR ; DIG 3 ; ADD ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUP 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 53 ; FAILWITH } {} ; DIG 3 ; CDR ; ADD ; SOME ; SWAP ; UPDATE } { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ; DUP 3 ; DIG 2 ; ADD ; SWAP ; DUP ; DUP 6 ; MEM ; IF { DUP ; DUP 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 60 ; FAILWITH } {} ; DUP 5 ; ADD ; SOME ; SWAP ; UPDATE } { DUP 3 ; SOME ; DUP 6 ; UPDATE } ; PUSH nat 10000 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: total_fee.value <= 10000" ; FAILWITH } ; DUP 9 ; GET 7 ; IF_LEFT { PUSH nat 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 12 ; DUP 15 ; GET 9 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 255 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 9 ; DUP 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; PAIR ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS ; DUG 7 } { DROP 2 } } ; DUP ; DUP 10 ; DUP 13 ; GET 9 ; MUL ; SUB ; DUP 10 ; DUP 13 ; GET 9 ; MUL ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUG 2 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; ISNAT ; IF_NONE { PUSH int 265 ; FAILWITH } {} ; DUP 7 ; CAR ; PAIR ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS } { DROP 8 } } { IF_LEFT { PUSH nat 0 ; NIL (pair address (pair nat nat)) ; DUP 4 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 13 ; DUP 16 ; GET 9 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 106 ; FAILWITH } { CAR } ; DUP ; DIG 4 ; ADD ; DUG 3 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 2 ; SWAP ; DUP 5 ; CDR ; DIG 3 ; CAR ; PAIR 3 ; CONS } { DROP 2 } } ; DUP 10 ; DUP 13 ; GET 9 ; MUL ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; DUP 11 ; DUP 14 ; GET 9 ; MUL ; SUB ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; ISNAT ; IF_NONE { PUSH int 122 ; FAILWITH } {} ; DUP 3 ; CDR ; DUP 8 ; CAR ; PAIR 3 ; CONS } { DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } ; DUG 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 394 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; DIG 4 ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { PUSH mutez 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; PUSH mutez 1 ; DUP 13 ; DUP 16 ; GET 9 ; MUL ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 78 ; FAILWITH } {} ; CAR ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { DIG 9 ; DIG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 85 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS ; DUG 7 } { DROP 2 } } ; PUSH mutez 1 ; DUP ; DUP 3 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; DUP 11 ; DUP 14 ; GET 9 ; MUL ; SUB ; ISNAT ; IF_NONE { PUSH int 90 ; FAILWITH } {} ; MUL ; PUSH mutez 1 ; DUP 11 ; DUP 14 ; GET 9 ; MUL ; MUL ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DUP 5 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 98 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 8 } ; SWAP ; DUP ; DUG 2 ; DUP 5 ; GET 9 ; MUL ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; COMPARE ; GT ; IF { SENDER ; CONTRACT unit ; IF_NONE { PUSH int 713 ; FAILWITH } {} ; PUSH mutez 1 ; DUP 4 ; DUP 7 ; GET 9 ; MUL ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH int 716 ; FAILWITH } {} ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } {} } } ; DIG 5 ; UNPAIR ; UNPAIR ; UNPAIR ; DUP ; DUP 10 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 723 ; FAILWITH } {} ; DUP 8 ; DUP 11 ; GET 11 ; SUB ; ISNAT ; IF_NONE { PUSH int 723 ; FAILWITH } {} ; UPDATE 11 ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; PAIR ; DUG 5 ; PUSH nat 0 ; DUP 7 ; CAR ; CAR ; CAR ; DUP 7 ; CAR ; GET ; IF_NONE { PUSH int 728 ; FAILWITH } {} ; GET 11 ; COMPARE ; EQ ; IF { DIG 5 ; UNPAIR ; UNPAIR ; UNPAIR ; NONE (pair address (pair (pair address nat) (pair (option nat) (pair (or address (or (pair address nat) unit)) (pair nat (pair nat (pair (map address nat) (pair (option timestamp) (pair (option timestamp) (pair nat (pair nat (option (pair address bytes))))))))))))) ; DUP 10 ; CAR ; UPDATE ; PAIR ; PAIR ; PAIR ; DUG 5 } {} ; DUP 4 ; GET 5 ; IF_NONE { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP } { DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 5 ; DROP ; SWAP ; DUP 4 ; CAR ; CONTRACT %_update_sales (pair (nat %amount) (pair %token (address %address) (pair (nat %exhibition_id) (nat %token_id)))) ; IF_NONE { PUSH int 1042 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 6 ; GET 3 ; CDR ; DIG 4 ; DIG 6 ; GET 3 ; CAR ; PAIR 3 ; DIG 4 ; PAIR ; TRANSFER_TOKENS ; CONS } } } { IF_LEFT { DUP ; CAR ; CAR ; SIZE ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_NO_ASKS" ; FAILWITH } ; DUP ; GET 3 ; SENDER ; SWAP ; IF_NONE {} { SWAP ; DROP } ; PUSH nat 0 ; EMPTY_MAP address nat ; EMPTY_MAP address (map nat (map address (map address nat))) ; EMPTY_MAP address (map address (map address nat)) ; EMPTY_MAP address (list (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat))))) ; PUSH bool True ; PUSH string "" ; NIL operation ; DUP 10 ; CAR ; CAR ; ITER { DUP 12 ; CAR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { DUP 12 ; CAR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 922 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { DUP ; GET 17 ; PUSH bool True ; SWAP ; IF_NONE {} { NOW ; COMPARE ; GE ; IF { DROP ; PUSH bool False } {} } ; SWAP ; DUP ; DUG 2 ; GET 15 ; IF_NONE {} { NOW ; COMPARE ; LE ; IF { DROP ; PUSH bool False } {} } ; DUP ; IF { DUP 3 ; GET 3 ; DUP 3 ; GET 11 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DUP 3 ; GET 22 ; IF_NONE {} { DUP 9 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { DIG 8 ; PUSH (option (list (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat)))))) (Some {}) ; DUP 3 ; CAR ; UPDATE ; DUG 8 } ; DIG 8 ; DUP ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 939 ; FAILWITH } {} ; DUP 6 ; GET 3 ; DUP 8 ; GET 4 ; PAIR ; DUP 7 ; CAR ; PAIR ; DUP 4 ; CDR ; DUP 17 ; PAIR ; DUP 6 ; PAIR ; PAIR ; CONS ; SOME ; DIG 2 ; CAR ; UPDATE ; DUG 7 } ; DUP 15 ; CAR ; CAR ; CDR ; DUP 15 ; GET 4 ; DIG 4 ; DUP ; GET 19 ; SWAP ; DUP ; DUG 6 ; GET 21 ; PAIR 3 ; VIEW "get_share_fee" (map address nat) ; IF_NONE { PUSH int 136 ; FAILWITH } {} ; DUP 16 ; GET 6 ; UNIT ; VIEW "get_treasury" address ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 5 ; GET 21 ; PUSH nat 0 ; DIG 3 ; DUP ; DUP ; DUG 5 ; ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ; PUSH nat 0 ; DUP 9 ; GET 19 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 47 ; FAILWITH } {} ; DUG 2 } {} ; DUP 8 ; GET 13 ; ITER { DUP ; CDR ; DIG 3 ; ADD ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUP 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 53 ; FAILWITH } {} ; DIG 3 ; CDR ; ADD ; SOME ; SWAP ; UPDATE } { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ; DUP 3 ; DIG 2 ; ADD ; SWAP ; DUP ; DUP 5 ; MEM ; IF { DUP ; DUP 5 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 60 ; FAILWITH } {} ; DUP 5 ; ADD ; SOME ; SWAP ; UPDATE } { DUP 3 ; SOME ; DUP 5 ; UPDATE } ; PUSH nat 10000 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: total_fee.value <= 10000" ; FAILWITH } ; DUP 22 ; DUP 19 ; DUP 10 ; GET 3 ; PAIR ; DUP 10 ; CAR ; PAIR ; DUP 8 ; DIG 17 ; PAIR ; PAIR ; EXEC ; DUG 14 ; DUP 8 ; GET 7 ; IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUP 21 ; DUP 6 ; CAR ; DIG 3 ; PAIR ; DIG 2 ; PAIR ; SENDER ; DUP 4 ; DUP 7 ; GET 9 ; MUL ; PAIR ; DIG 11 ; PAIR ; PAIR ; EXEC ; DUG 8 } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUP 20 ; DUP 6 ; CAR ; DIG 3 ; PAIR ; DIG 2 ; PAIR ; SENDER ; DUP 4 ; DUP 7 ; GET 9 ; MUL ; PAIR ; DIG 12 ; PAIR ; PAIR ; EXEC ; DUG 9 } { PUSH nat 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 11 ; DUP 14 ; GET 9 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 132 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP 20 ; DUP 3 ; CAR ; MEM ; IF { DIG 19 ; DUP ; DIG 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 139 ; FAILWITH } {} ; DIG 3 ; ADD ; SOME ; SWAP ; UPDATE ; DUG 17 } { DIG 19 ; SWAP ; SOME ; DIG 2 ; CAR ; UPDATE ; DUG 17 } } { DROP 2 } } ; DUP ; DUP 9 ; DUP 12 ; GET 9 ; MUL ; SUB ; ISNAT ; IF_NONE { PUSH int 141 ; FAILWITH } {} ; DUP 9 ; DUP 12 ; GET 9 ; MUL ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DUP 12 ; DUP 5 ; CAR ; MEM ; IF { DIG 11 ; DUP ; DUP 6 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 146 ; FAILWITH } {} ; DIG 3 ; ADD ; SOME ; SWAP ; UPDATE ; DUG 10 } { DIG 11 ; SWAP ; SOME ; DUP 5 ; CAR ; UPDATE ; DUG 10 } } { DROP 8 } ; DUP ; DUP 4 ; GET 9 ; MUL ; DIG 12 ; ADD ; DUG 11 } } ; DIG 14 ; UNPAIR ; UNPAIR ; UNPAIR ; DUP ; DUP 9 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1003 ; FAILWITH } {} ; DUP 7 ; DUP 10 ; GET 11 ; SUB ; ISNAT ; IF_NONE { PUSH int 1003 ; FAILWITH } {} ; UPDATE 11 ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; PAIR ; DUG 14 ; DUP 3 ; GET 5 ; IF_NONE { DROP 3 } { DIG 2 ; DROP ; DIG 4 ; DUP 4 ; CAR ; CONTRACT %_update_sales (pair (nat %amount) (pair %token (address %address) (pair (nat %exhibition_id) (nat %token_id)))) ; IF_NONE { PUSH int 1042 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 6 ; GET 3 ; CDR ; DIG 4 ; DIG 6 ; GET 3 ; CAR ; PAIR 3 ; DIG 4 ; PAIR ; TRANSFER_TOKENS ; CONS ; SWAP } ; PUSH nat 0 ; DUP 13 ; CAR ; CAR ; CAR ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 1011 ; FAILWITH } {} ; GET 11 ; COMPARE ; EQ ; IF { DIG 11 ; UNPAIR ; UNPAIR ; UNPAIR ; NONE (pair address (pair (pair address nat) (pair (option nat) (pair (or address (or (pair address nat) unit)) (pair nat (pair nat (pair (map address nat) (pair (option timestamp) (pair (option timestamp) (pair nat (pair nat (option (pair address bytes))))))))))))) ; DUP 6 ; CAR ; UPDATE ; PAIR ; PAIR ; PAIR ; DUG 11 } {} } { DIG 4 ; DROP ; DIG 4 ; DROP 3 ; PUSH bool False ; DUG 2 ; PUSH string "M_EXPIRED" ; DUG 2 } } { DIG 3 ; DROP ; DIG 3 ; DROP 2 ; PUSH bool False ; DUG 2 ; PUSH string "M_NO_SELF_FULFILL" ; DUG 2 } } { DIG 2 ; DROP ; DIG 2 ; DROP ; PUSH bool False ; DUG 2 ; PUSH string "M_ITEM_NO_EXIST" ; DUG 2 } ; DUP 11 ; CAR ; CDR ; IF { DUP 4 ; IF { DROP } { DUP 3 ; FAILWITH } } { DROP } } ; PUSH mutez 1 ; DUP 9 ; MUL ; DUP ; AMOUNT ; COMPARE ; GE ; IF {} { PUSH string "M_TEZ_AMOUNT_MISMATCH" ; FAILWITH } ; DUP ; AMOUNT ; COMPARE ; GT ; IF { SWAP ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 1030 ; FAILWITH } {} ; DUP 3 ; AMOUNT ; SUB_MUTEZ ; IF_NONE { PUSH int 1030 ; FAILWITH } {} ; UNIT ; TRANSFER_TOKENS ; CONS ; SWAP } {} ; DUP 7 ; ITER { DUP ; CDR ; NIL (pair address (list (pair address (pair nat nat)))) ; SWAP ; ITER { DUP ; CDR ; ITER { DUP ; CDR ; NIL (pair address (pair nat nat)) ; SWAP ; ITER { DUP ; DUG 2 ; CDR ; DUP 5 ; CAR ; DIG 3 ; CAR ; PAIR 3 ; CONS } ; DIG 3 ; SWAP ; DIG 2 ; CAR ; PAIR ; CONS ; SWAP } ; DROP } ; DIG 3 ; DIG 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 435 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS ; SWAP } ; DUP 6 ; ITER { DUP ; CDR ; ITER { DUP ; CDR ; ITER { DIG 4 ; DUP 4 ; CAR ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DUP 5 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS ; DUG 3 } ; DROP } ; DROP } ; DUP 8 ; ITER { DIG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 453 ; FAILWITH } {} ; PUSH mutez 1 ; DIG 3 ; CDR ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS ; SWAP } ; DUP 5 ; ITER { DIG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; CONTRACT %enforce_conditions (list (pair (pair (nat %amount) (pair (address %claimer) (bytes %condition_id))) (pair (address %creator) (pair (option %extra bytes) (pair %token (address %address) (nat %token_id)))))) ; IF_NONE { PUSH int 517 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; CDR ; TRANSFER_TOKENS ; CONS ; SWAP } ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } { SWAP ; DUP ; DUG 2 ; GET 5 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 417 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF {} { PUSH string "M_NO_SELF_FULFILL" ; FAILWITH } ; DUP ; GET 11 ; IF_NONE {} { NOW ; COMPARE ; LT ; IF {} { PUSH string "M_EXPIRED" ; FAILWITH } } ; DUP ; GET 3 ; CDR ; IF_NONE { SWAP ; DUP ; DUG 2 ; GET 3 ; IF_NONE { PUSH int 430 ; FAILWITH } {} } {} ; SWAP ; DUP ; DUG 2 ; GET 15 ; IF_NONE {} { SENDER ; COMPARE ; EQ ; IF {} { PUSH string "M_ONLY_TARGET" ; FAILWITH } } ; SWAP ; DUP ; DUG 2 ; GET 18 ; IF_NONE { NIL operation } { DUP ; CAR ; CONTRACT %enforce_conditions (list (pair (pair (nat %amount) (pair (address %claimer) (bytes %condition_id))) (pair (address %creator) (pair (option %extra bytes) (pair %token (address %address) (nat %token_id)))))) ; IF_NONE { PUSH int 517 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat)))) ; DUP 6 ; DUP 8 ; GET 3 ; CAR ; PAIR ; DUP 9 ; GET 4 ; PAIR ; DUP 8 ; CAR ; PAIR ; DIG 5 ; CDR ; SENDER ; PAIR ; PUSH nat 1 ; PAIR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } ; DUP 3 ; GET 3 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 305 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 7 ; DUP 9 ; CAR ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DUP 5 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DUP 6 ; GET 6 ; UNIT ; VIEW "get_treasury" address ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 7 ; CAR ; CAR ; CDR ; DUP 6 ; GET 17 ; PUSH nat 0 ; DUP 8 ; GET 13 ; PAIR 3 ; VIEW "get_share_fee" (map address nat) ; IF_NONE { PUSH int 136 ; FAILWITH } {} ; DUP 3 ; PUSH nat 0 ; DIG 2 ; DUP ; DUP ; DUG 4 ; ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ; SWAP ; DUP ; DUG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 47 ; FAILWITH } {} ; DUG 2 ; DUP 9 ; GET 9 ; ITER { DUP ; CDR ; DIG 3 ; ADD ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUP 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 53 ; FAILWITH } {} ; DIG 3 ; CDR ; ADD ; SOME ; SWAP ; UPDATE } { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ; DUP 3 ; DIG 2 ; ADD ; SWAP ; DUP ; DUP 6 ; MEM ; IF { DUP ; DUP 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 60 ; FAILWITH } {} ; DUP 5 ; ADD ; SOME ; SWAP ; UPDATE } { DUP 3 ; SOME ; DUP 6 ; UPDATE } ; PUSH nat 10000 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: total_fee.value <= 10000" ; FAILWITH } ; DUP 9 ; GET 5 ; IF_LEFT { PUSH nat 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 14 ; GET 7 ; MUL ; EDIV ; IF_NONE { PUSH int 255 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 10 ; DUP 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; PAIR ; DUP 14 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS ; DUG 8 } { DROP 2 } } ; DUP ; DUP 12 ; GET 7 ; SUB ; DUP 12 ; GET 7 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DUG 2 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; ISNAT ; IF_NONE { PUSH int 265 ; FAILWITH } {} ; SENDER ; PAIR ; DIG 4 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS } { DROP 9 ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP } } { IF_LEFT { PUSH nat 0 ; NIL (pair address (pair nat nat)) ; DUP 4 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 15 ; GET 7 ; MUL ; EDIV ; IF_NONE { PUSH int 106 ; FAILWITH } { CAR } ; DUP ; DIG 4 ; ADD ; DUG 3 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 2 ; SWAP ; DUP 5 ; CDR ; DIG 3 ; CAR ; PAIR 3 ; CONS } { DROP 2 } } ; DUP 12 ; GET 7 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; DUP 13 ; GET 7 ; SUB ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 7 ; DROP ; DIG 7 ; DROP ; DIG 7 ; DROP ; DIG 7 ; DROP ; ISNAT ; IF_NONE { PUSH int 122 ; FAILWITH } {} ; DUP 3 ; CDR ; SENDER ; PAIR 3 ; CONS } { DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP } ; DUG 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 394 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; DIG 4 ; DIG 5 ; CAR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { PUSH mutez 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; PUSH mutez 1 ; DUP 15 ; GET 7 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 78 ; FAILWITH } {} ; CAR ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { DIG 10 ; DIG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 85 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS ; DUG 8 } { DROP 2 } } ; PUSH mutez 1 ; DUP ; DUP 3 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; DUP 13 ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 90 ; FAILWITH } {} ; MUL ; PUSH mutez 1 ; DUP 13 ; GET 7 ; MUL ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SWAP ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 98 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 9 ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP } } } ; DIG 2 ; DUP ; GET 5 ; NONE (pair address (pair (pair address (option nat)) (pair (or address (or (pair address nat) unit)) (pair nat (pair (map address nat) (pair (option timestamp) (pair nat (pair (option address) (pair (map address nat) (option (pair address bytes))))))))))) ; DIG 4 ; CAR ; UPDATE ; UPDATE 5 ; SWAP } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DUP ; CDR ; SIZE ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "M_NO_OFFERS" ; FAILWITH } ; EMPTY_MAP address nat ; EMPTY_MAP address (map nat (map address (map address nat))) ; EMPTY_MAP address (map address (map address nat)) ; EMPTY_MAP address (list (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat))))) ; PUSH bool True ; PUSH string "" ; DUP 8 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DUP 8 ; CDR ; ITER { DUP 10 ; GET 5 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { DUP 10 ; GET 5 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 773 ; FAILWITH } {} ; DUP ; GET 15 ; PUSH bool True ; SWAP ; IF_NONE {} { SWAP ; DROP ; SENDER ; COMPARE ; EQ } ; DUP ; IF { SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH bool True ; DUP 3 ; GET 11 ; IF_NONE {} { NOW ; COMPARE ; GE ; IF { DROP ; PUSH bool False } {} } ; DUP ; IF { DUP 3 ; GET 3 ; CDR ; IF_NONE { DUP 4 ; GET 4 ; IF_NONE { PUSH int 789 ; FAILWITH } {} } {} ; DUP ; DUP 5 ; GET 3 ; CAR ; PAIR ; DUP 5 ; GET 18 ; IF_NONE {} { DUP 11 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { DIG 10 ; PUSH (option (list (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat)))))) (Some {}) ; DUP 3 ; CAR ; UPDATE ; DUG 10 } ; DIG 10 ; DUP ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 799 ; FAILWITH } {} ; DUP 4 ; DUP 10 ; GET 3 ; PAIR ; DUP 9 ; CAR ; PAIR ; DUP 4 ; CDR ; SENDER ; PAIR ; PUSH nat 1 ; PAIR ; PAIR ; CONS ; SOME ; DIG 2 ; CAR ; UPDATE ; DUG 9 } ; DUP 17 ; DUP 6 ; CAR ; DUP 3 ; PAIR ; SENDER ; PAIR ; PUSH nat 1 ; DIG 14 ; PAIR ; PAIR ; EXEC ; DUG 11 ; DUP 15 ; GET 6 ; UNIT ; VIEW "get_treasury" address ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 16 ; CAR ; CAR ; CDR ; DUP 7 ; GET 17 ; PUSH nat 0 ; DUP 9 ; GET 13 ; PAIR 3 ; VIEW "get_share_fee" (map address nat) ; IF_NONE { PUSH int 136 ; FAILWITH } {} ; DUP 9 ; PUSH nat 0 ; DIG 2 ; DUP ; DUP ; DUG 4 ; ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ; SWAP ; DUP ; DUG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 47 ; FAILWITH } {} ; DUG 2 ; DUP 10 ; GET 9 ; ITER { DUP ; CDR ; DIG 3 ; ADD ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUP 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 53 ; FAILWITH } {} ; DIG 3 ; CDR ; ADD ; SOME ; SWAP ; UPDATE } { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ; DUP 3 ; DIG 2 ; ADD ; SWAP ; DUP ; DUP 6 ; MEM ; IF { DUP ; DUP 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 60 ; FAILWITH } {} ; DUP 5 ; ADD ; SOME ; SWAP ; UPDATE } { DUP 3 ; SOME ; DUP 6 ; UPDATE } ; PUSH nat 10000 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: total_fee.value <= 10000" ; FAILWITH } ; PUSH nat 0 ; DUP 11 ; GET 7 ; COMPARE ; GT ; IF { DUP 10 ; GET 5 ; IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUP 17 ; SENDER ; DIG 3 ; PAIR ; DIG 2 ; PAIR ; DIG 2 ; DUP ; CAR ; SWAP ; GET 7 ; PAIR ; DIG 8 ; PAIR ; PAIR ; EXEC ; DUG 5 } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUP 16 ; SENDER ; DIG 3 ; PAIR ; DIG 2 ; PAIR ; DIG 2 ; DUP ; CAR ; SWAP ; GET 7 ; PAIR ; DIG 9 ; PAIR ; PAIR ; EXEC ; DUG 6 } { PUSH nat 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 15 ; GET 7 ; MUL ; EDIV ; IF_NONE { PUSH int 132 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP 22 ; DUP 3 ; CAR ; MEM ; IF { DIG 21 ; DUP ; DIG 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 139 ; FAILWITH } {} ; DIG 3 ; ADD ; SOME ; SWAP ; UPDATE ; DUG 19 } { DIG 21 ; SWAP ; SOME ; DIG 2 ; CAR ; UPDATE ; DUG 19 } } { DROP 2 } } ; DUP ; DUP 13 ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 141 ; FAILWITH } {} ; DUP 13 ; GET 7 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DUP 9 ; SENDER ; MEM ; IF { DIG 8 ; DUP ; SENDER ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 146 ; FAILWITH } {} ; DIG 3 ; ADD ; SOME ; SWAP ; UPDATE ; DUG 7 } { DIG 8 ; SWAP ; SOME ; SENDER ; UPDATE ; DUG 7 } } { DROP 13 } } } } { DROP 10 } ; DIG 9 ; DUP ; GET 5 ; NONE (pair address (pair (pair address (option nat)) (pair (or address (or (pair address nat) unit)) (pair nat (pair (map address nat) (pair (option timestamp) (pair nat (pair (option address) (pair (map address nat) (option (pair address bytes))))))))))) ; DUP 4 ; CAR ; UPDATE ; UPDATE 5 ; DUG 9 } { DIG 5 ; DROP ; DIG 5 ; DROP 4 ; PUSH bool False ; DUG 2 ; PUSH string "M_EXPIRED" ; DUG 2 } } { DIG 4 ; DROP ; DIG 4 ; DROP 3 ; PUSH bool False ; DUG 2 ; PUSH string "M_ONLY_TARGET" ; DUG 2 } } { DIG 4 ; DROP ; DIG 4 ; DROP 3 ; PUSH bool False ; DUG 2 ; PUSH string "M_NO_SELF_FULFILL" ; DUG 2 } } { DIG 2 ; DROP ; DIG 2 ; DROP ; PUSH bool False ; DUG 2 ; PUSH string "M_ITEM_NO_EXIST" ; DUG 2 } ; DUP 9 ; CAR ; IF { DUP 4 ; IF { DROP } { DUP 3 ; FAILWITH } } { DROP } } ; DROP 3 ; DIG 4 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; NIL operation ; DIG 3 ; ITER { DUP ; CDR ; NIL (pair address (list (pair address (pair nat nat)))) ; SWAP ; ITER { DUP ; CDR ; ITER { DUP ; CDR ; NIL (pair address (pair nat nat)) ; SWAP ; ITER { DUP ; DUG 2 ; CDR ; DUP 5 ; CAR ; DIG 3 ; CAR ; PAIR 3 ; CONS } ; DIG 3 ; SWAP ; DIG 2 ; CAR ; PAIR ; CONS ; SWAP } ; DROP } ; DUG 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 435 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } ; DIG 2 ; ITER { DUP ; CDR ; ITER { DUP ; CDR ; ITER { DIG 3 ; DUP 4 ; CAR ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DUP 5 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS ; DUG 2 } ; DROP } ; DROP } ; DIG 2 ; ITER { DUP ; DUG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 453 ; FAILWITH } {} ; PUSH mutez 1 ; DIG 3 ; CDR ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } ; SWAP ; ITER { DUP ; DUG 2 ; CAR ; CONTRACT %enforce_conditions (list (pair (pair (nat %amount) (pair (address %claimer) (bytes %condition_id))) (pair (address %creator) (pair (option %extra bytes) (pair %token (address %address) (nat %token_id)))))) ; IF_NONE { PUSH int 517 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; CDR ; TRANSFER_TOKENS ; CONS } } { SWAP ; DUP ; DUG 2 ; GET 5 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 516 ; FAILWITH } {} ; DUP 3 ; CAR ; GET 3 ; SENDER ; VIEW "is_gallery" bool ; IF_NONE { PUSH string "invalid_view" ; FAILWITH } {} ; IF {} { PUSH string "WrongCondition: sp.view(\"is_gallery\", sp.sender, self.data.gallery_factory, sp.TBool).open_some(message = 'invalid_view')" ; FAILWITH } ; DUP ; GET 11 ; IF_NONE {} { NOW ; COMPARE ; LT ; IF {} { PUSH string "M_EXPIRED" ; FAILWITH } } ; SWAP ; DUP ; DUG 2 ; GET 8 ; IF_NONE {} { DUP ; DUP 3 ; GET 5 ; MEM ; IF {} { PUSH string "PM_INVALID_CURRENCY" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; GET ; IF_NONE { PUSH int 525 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; GET 7 ; COMPARE ; GE ; IF {} { PUSH string "PM_PRICE_TOO_LOW" ; FAILWITH } } ; DUP ; GET 3 ; CDR ; IF_NONE { SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE { PUSH int 535 ; FAILWITH } {} } {} ; SWAP ; DUP ; DUG 2 ; GET 15 ; IF_NONE {} { SENDER ; COMPARE ; EQ ; IF {} { PUSH string "M_ONLY_TARGET" ; FAILWITH } } ; SWAP ; DUP ; DUG 2 ; GET 18 ; IF_NONE { NIL operation } { DUP ; CAR ; CONTRACT %enforce_conditions (list (pair (pair (nat %amount) (pair (address %claimer) (bytes %condition_id))) (pair (address %creator) (pair (option %extra bytes) (pair %token (address %address) (nat %token_id)))))) ; IF_NONE { PUSH int 517 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair (pair nat (pair address bytes)) (pair address (pair (option bytes) (pair address nat)))) ; DUP 6 ; DUP 8 ; GET 3 ; CAR ; PAIR ; DUP 9 ; GET 7 ; PAIR ; DUP 8 ; CAR ; PAIR ; DIG 5 ; CDR ; SENDER ; PAIR ; PUSH nat 1 ; PAIR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } ; DUP 3 ; GET 3 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 305 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 7 ; DUP 9 ; CAR ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DUP 5 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DUP 6 ; GET 6 ; UNIT ; VIEW "get_treasury" address ; IF_NONE { PUSH int 158 ; FAILWITH } {} ; DUP 7 ; CAR ; CAR ; CDR ; DUP 6 ; GET 17 ; PUSH nat 0 ; DUP 8 ; GET 13 ; PAIR 3 ; VIEW "get_share_fee" (map address nat) ; IF_NONE { PUSH int 136 ; FAILWITH } {} ; DUP 3 ; PUSH nat 0 ; DIG 2 ; DUP ; DUP ; DUG 4 ; ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ; SWAP ; DUP ; DUG 2 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 47 ; FAILWITH } {} ; DUG 2 ; SENDER ; DUP 9 ; DUP 12 ; GET 3 ; DUP 12 ; GET 3 ; CAR ; PAIR 3 ; VIEW "_get_shares" (map address nat) ; IF_NONE { PUSH string "Invalid view" ; FAILWITH } {} ; ITER { DUP ; CDR ; DIG 3 ; ADD ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUP 3 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 53 ; FAILWITH } {} ; DIG 3 ; CDR ; ADD ; SOME ; SWAP ; UPDATE } { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ; DUP 3 ; DIG 2 ; ADD ; SWAP ; DUP ; DUP 6 ; MEM ; IF { DUP ; DUP 6 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 60 ; FAILWITH } {} ; DUP 5 ; ADD ; SOME ; SWAP ; UPDATE } { DUP 3 ; SOME ; DUP 6 ; UPDATE } ; PUSH nat 10000 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: total_fee.value <= 10000" ; FAILWITH } ; DUP 9 ; GET 5 ; IF_LEFT { PUSH nat 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 14 ; GET 7 ; MUL ; EDIV ; IF_NONE { PUSH int 255 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 10 ; DUP 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; PAIR ; DUP 14 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS ; DUG 8 } { DROP 2 } } ; DUP ; DUP 12 ; GET 7 ; SUB ; DUP 12 ; GET 7 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DUG 2 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 460 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; ISNAT ; IF_NONE { PUSH int 265 ; FAILWITH } {} ; SENDER ; PAIR ; DIG 4 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS } { DROP 9 ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP } } { IF_LEFT { PUSH nat 0 ; NIL (pair address (pair nat nat)) ; DUP 4 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; DUP 15 ; GET 7 ; MUL ; EDIV ; IF_NONE { PUSH int 106 ; FAILWITH } { CAR } ; DUP ; DIG 4 ; ADD ; DUG 3 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 2 ; SWAP ; DUP 5 ; CDR ; DIG 3 ; CAR ; PAIR 3 ; CONS } { DROP 2 } } ; DUP 12 ; GET 7 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; DUP 13 ; GET 7 ; SUB ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 7 ; DROP ; DIG 7 ; DROP ; DIG 7 ; DROP ; DIG 7 ; DROP ; ISNAT ; IF_NONE { PUSH int 122 ; FAILWITH } {} ; DUP 3 ; CDR ; SENDER ; PAIR 3 ; CONS } { DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP } ; DUG 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 394 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; DIG 4 ; DIG 5 ; CAR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { PUSH mutez 0 ; DUP 3 ; ITER { DUP ; CDR ; PUSH nat 10000 ; SWAP ; PUSH mutez 1 ; DUP 15 ; GET 7 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 78 ; FAILWITH } {} ; CAR ; DUP ; DIG 3 ; ADD ; DUG 2 ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { DIG 10 ; DIG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 85 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS ; DUG 8 } { DROP 2 } } ; PUSH mutez 1 ; DUP ; DUP 3 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; DUP 13 ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 90 ; FAILWITH } {} ; MUL ; PUSH mutez 1 ; DUP 13 ; GET 7 ; MUL ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SWAP ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 98 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 9 ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP } } } ; DIG 2 ; DUP ; GET 5 ; NONE (pair address (pair (pair address (option nat)) (pair (or address (or (pair address nat) unit)) (pair nat (pair (map address nat) (pair (option timestamp) (pair nat (pair (option address) (pair (map address nat) (option (pair address bytes))))))))))) ; DIG 4 ; CAR ; UPDATE ; UPDATE 5 ; SWAP } } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; IF_LEFT { DUP ; GET 16 ; SENDER ; SWAP ; IF_NONE {} { SWAP ; DROP ; SWAP ; DUP ; DUG 2 ; GET 3 ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } ; IF {} { PUSH string "M_PROXY_OFFER_ONLY_TEZ" ; FAILWITH } } ; SWAP ; DUP ; DUG 2 ; GET 3 ; IF_LEFT { DROP ; PUSH nat 0 ; DUP 3 ; GET 5 ; COMPARE ; GT ; IF {} { PUSH string "M_MIN_0_FA12" ; FAILWITH } } { IF_LEFT { DROP ; PUSH nat 0 ; DUP 3 ; GET 5 ; COMPARE ; GT ; IF {} { PUSH string "M_MIN_0_FA2" ; FAILWITH } } { DROP ; SWAP ; DUP ; DUG 2 ; GET 5 ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "M_TEZ_AMOUNT_MISMATCH" ; FAILWITH } } } ; PUSH nat 0 ; DUP 3 ; GET 13 ; ITER { CDR ; ADD } ; DUP ; PUSH nat 10000 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "M_REFS_EXCEED_100%" ; FAILWITH } ; DUP 4 ; CAR ; CAR ; CDR ; UNIT ; VIEW "get_management_fee" nat ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; PUSH nat 100 ; DUP 5 ; GET 7 ; SIZE ; COMPARE ; LE ; IF {} { PUSH string "R_TOO_MANY_SHARES" ; FAILWITH } ; PUSH nat 0 ; DUP 5 ; GET 7 ; ITER { CDR ; ADD } ; SWAP ; DUP ; DUG 2 ; PUSH nat 10000 ; SUB ; ISNAT ; IF_NONE { PUSH int 28 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; COMPARE ; LE ; IF {} { PUSH string "R_INVALID_SHARES_TOTAL" ; FAILWITH } ; DUP 6 ; DUP ; GET 5 ; DIG 6 ; DUP ; GET 15 ; SWAP ; DUP ; GET 13 ; SWAP ; DUP ; DUG 9 ; GET 11 ; DUP 7 ; DIG 10 ; DUP ; GET 9 ; SWAP ; DUP ; GET 7 ; SWAP ; DUP ; GET 5 ; SWAP ; DUP ; GET 3 ; SWAP ; DUP ; DUG 15 ; CAR ; DUP 15 ; PAIR 10 ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; SOME ; DIG 3 ; GET 3 ; CDR ; UPDATE ; UPDATE 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; PUSH nat 1 ; ADD ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR } { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; DUP 3 ; GET ; IF_NONE { PUSH int 396 ; FAILWITH } {} ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "M_NOT_RETRACTOR" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; NONE (pair address (pair (pair address nat) (pair (option nat) (pair (or address (or (pair address nat) unit)) (pair nat (pair nat (pair (map address nat) (pair (option timestamp) (pair (option timestamp) (pair nat (pair nat (option (pair address bytes))))))))))))) ; DIG 5 ; UPDATE ; PAIR ; PAIR ; PAIR } ; NIL operation } } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { IF_LEFT { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 384 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "M_NOT_RETRACTOR" ; FAILWITH } ; DUP ; GET 5 ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } ; IF { DUP ; GET 7 ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 389 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 1 ; DIG 3 ; GET 7 ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { DROP ; NIL operation } ; DIG 2 ; DUP ; GET 5 ; NONE (pair address (pair (pair address (option nat)) (pair (or address (or (pair address nat) unit)) (pair nat (pair (map address nat) (pair (option timestamp) (pair nat (pair (option address) (pair (map address nat) (option (pair address bytes))))))))))) ; DIG 4 ; UPDATE ; UPDATE 5 ; SWAP } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; GET 6 ; UNIT ; VIEW "get_admin" address ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; CAR ; DIG 3 ; SWAP ; PAIR ; PAIR ; PAIR ; NIL operation } } { DIG 2 ; DROP ; IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 6 ; UNIT ; VIEW "get_admin" address ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 3 ; PAIR ; SWAP ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; GET 6 ; UNIT ; VIEW "get_admin" address ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ; UPDATE 6 } ; NIL operation } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_ask" nat (pair (address %creator) (pair (pair %token (address %address) (nat %token_id)) (pair (option %exhibition_id nat) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (nat %editions) (pair (map %shares address nat) (pair (option %start_time timestamp) (pair (option %expiry_time timestamp) (pair (nat %referral_bonus) (pair (nat %platform_fee) (option %condition (pair (address %address) (bytes %id)))))))))))))) { UNPAIR ; SWAP ; CAR ; CAR ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 1080 ; FAILWITH } {} } ; view "get_next_ask_id" unit nat { GET 5 ; CAR } ; view "get_next_offer_id" unit nat { GET 5 ; CDR } ; view "get_offer" nat (pair (address %creator) (pair (pair %token (address %address) (option %token_id nat)) (pair (or %currency (address %fa12) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair (nat %amount) (pair (map %shares address nat) (pair (option %expiry_time timestamp) (pair (nat %platform_fee) (pair (option %target address) (pair (map %referrers address nat) (option %condition (pair (address %address) (bytes %id)))))))))))) { UNPAIR ; SWAP ; GET 5 ; SWAP ; GET ; IF_NONE { PUSH int 1076 ; FAILWITH } {} } ; view "get_remaining_editions" nat nat { UNPAIR ; SWAP ; CAR ; CAR ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 1084 ; FAILWITH } {} ; GET 11 } }