x
823
1369
parameter (or
(or
(or
(or
(pair %balance_of
(list %requests (pair (address %owner) (nat %token_id)))
(contract %callback (list (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))))
(map %create_token string bytes))
(or (pair %get_total_supply (nat %token_id) (contract nat))
(list %mint_asset (pair (nat %token_id)
(pair (address %receiver) (nat %amount))))))
(or
(or (list %mint_gov_token (pair (address %receiver) (nat %amount)))
(pair %permit key (pair signature (bytes %permit_hash))))
(or
(pair %set_expiry (address %issuer)
(pair (nat %expiry) (option %permit_hash bytes)))
(list %set_minters (pair (address %minter) (nat %share))))))
(or
(or
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount))))))
(address %update_admin))
(or (pair %update_minter (address %minter) (nat %share))
(list %update_operators (or
(pair %add_operator (address %owner)
(pair (address %operator)
(nat %token_id)))
(pair %remove_operator (address %owner)
(pair
(address %operator)
(nat %token_id))))))));
storage (pair
(big_map %account_info address
(pair (map %balances nat nat) (set %allowances address)))
(pair (big_map %token_info nat nat)
(pair (big_map %metadata string bytes)
(pair
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info string bytes)))
(pair (map %minters_info address nat)
(pair (nat %last_token_id)
(pair (address %admin)
(pair (nat %permit_counter)
(pair
(big_map %permits address
(pair
(option %expiry nat)
(map %permits
bytes
(pair
(timestamp %created_at)
(option %expiry nat)))))
(pair (nat %default_expiry)
(nat %total_minter_shares)))))))))));
code { EMPTY_MAP bytes (pair timestamp (option nat)) ;
NONE nat ;
PAIR ;
PUSH nat 1000000 ;
PUSH nat 10000000 ;
MUL ;
LAMBDA
(pair (pair nat (option nat)) (pair timestamp (option nat)))
bool
{ UNPAIR ;
UNPAIR ;
NOW ;
DUP 4 ;
CDR ;
IF_NONE
{ DIG 2 ; IF_NONE { SWAP } { DIG 2 ; DROP } }
{ DIG 2 ; DIG 3 ; DROP 2 } ;
INT ;
DIG 2 ;
CAR ;
ADD ;
COMPARE ;
LT } ;
DUP ;
LAMBDA
(pair
(lambda (pair (pair nat (option nat)) (pair timestamp (option nat))) bool)
(pair
(pair address
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair (big_map nat (pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map address
(pair
(option nat)
(map
bytes
(pair
timestamp
(option nat)))))
(pair nat nat)))))))))))
(pair
(or
(or
(or
(or
(pair (list (pair address nat))
(contract (list (pair (pair address nat) nat))))
(map string bytes))
(or (pair nat (contract nat)) (list (pair nat (pair address nat)))))
(or (or (list (pair address nat)) (pair key (pair signature bytes)))
(or (pair address (pair nat (option bytes)))
(list (pair address nat)))))
(or
(or (list (pair address (list (pair address (pair nat nat)))))
address)
(or (pair address nat)
(list (or (pair address (pair address nat))
(pair address (pair address nat)))))))
string)))
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair (big_map nat (pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map address
(pair (option nat)
(map bytes
(pair
timestamp
(option nat)))))
(pair nat nat))))))))))
{ UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
DIG 2 ;
UNPAIR ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ SWAP ; DIG 2 ; DIG 4 ; DROP 4 }
{ PACK ;
BLAKE2B ;
DUP 4 ;
GET 17 ;
DUP 4 ;
GET ;
IF_NONE { SWAP ; DUP ; DUG 2 ; FAILWITH } {} ;
DUP ;
CDR ;
DUP 3 ;
GET ;
IF_NONE
{ SWAP ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 ; FAILWITH }
{ DIG 3 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
DUP 6 ;
GET 19 ;
PAIR ;
PAIR ;
DIG 5 ;
SWAP ;
EXEC ;
IF
{ DROP 4 ; PUSH string "EXPIRED_PERMIT" ; FAILWITH }
{ DIG 3 ;
DUP ;
GET 17 ;
DUP 3 ;
CDR ;
DIG 4 ;
NONE (pair timestamp (option nat)) ;
SWAP ;
UPDATE ;
DIG 3 ;
CAR ;
PAIR ;
SOME ;
DIG 3 ;
UPDATE ;
UPDATE 17 } } } } ;
SWAP ;
APPLY ;
LAMBDA
(pair address
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair (big_map nat (pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map address
(pair
(option nat)
(map bytes
(pair
timestamp
(option nat)))))
(pair nat nat)))))))))))
(pair (map nat nat) (set address))
{ UNPAIR ;
SWAP ;
CAR ;
SWAP ;
GET ;
IF_NONE { EMPTY_MAP nat nat ; EMPTY_SET address ; SWAP ; PAIR } {} } ;
LAMBDA
(pair nat
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair (big_map nat (pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map address
(pair
(option nat)
(map bytes
(pair
timestamp
(option nat)))))
(pair nat nat)))))))))))
nat
{ UNPAIR ; SWAP ; GET 3 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} } ;
LAMBDA
(pair (pair (map nat nat) (set address)) nat)
nat
{ UNPAIR ; CAR ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} } ;
DIG 5 ;
DUP 4 ;
DUP 4 ;
DUP 4 ;
PAIR 4 ;
LAMBDA
(pair
(pair (lambda (pair (pair (map nat nat) (set address)) nat) nat)
(pair
(lambda
(pair nat
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair
(big_map nat
(pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map
address
(pair
(option nat)
(map bytes
(pair
timestamp
(option nat)))))
(pair nat nat)))))))))))
nat)
(pair
(lambda
(pair address
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair
(big_map nat
(pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map
address
(pair
(option nat)
(map
bytes
(pair
timestamp
(option nat)))))
(pair nat nat)))))))))))
(pair (map nat nat) (set address)))
nat)))
(pair
(pair
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair (big_map nat (pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map address
(pair
(option nat)
(map bytes
(pair
timestamp
(option nat)))))
(pair nat nat))))))))))
nat)
address))
(pair (big_map address (pair (map nat nat) (set address)))
(pair (big_map nat nat)
(pair (big_map string bytes)
(pair (big_map nat (pair nat (map string bytes)))
(pair (map address nat)
(pair nat
(pair address
(pair nat
(pair
(big_map address
(pair (option nat)
(map bytes
(pair
timestamp
(option nat)))))
(pair nat nat))))))))))
{ UNPAIR ;
UNPAIR 4 ;
DIG 4 ;
UNPAIR ;
UNPAIR ;
DUP ;
PUSH nat 0 ;
PAIR ;
DIG 5 ;
SWAP ;
EXEC ;
DUP 7 ;
DUP 4 ;
DUP 3 ;
ADD ;
COMPARE ;
GT ;
IF { DIG 2 ; DROP ; DUP ; DIG 6 ; SUB ; ABS } { DIG 6 ; DROP ; DIG 2 } ;
DUP 3 ;
DUP 5 ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
PUSH nat 0 ;
SWAP ;
DUP ;
DUG 2 ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
SWAP ;
DUP ;
CAR ;
DUP 4 ;
DIG 3 ;
ADD ;
SOME ;
PUSH nat 0 ;
UPDATE ;
UPDATE 1 ;
DUP 3 ;
DIG 2 ;
DIG 3 ;
ADD ;
UPDATE 0 ;
DIG 2 ;
DUP ;
CAR ;
DIG 3 ;
DIG 4 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 ;
DUP ;
GET 3 ;
DIG 2 ;
SOME ;
PUSH nat 0 ;
UPDATE ;
UPDATE 3 } ;
SWAP ;
APPLY ;
DIG 7 ;
UNPAIR ;
DUP ;
IF_LEFT
{ IF_LEFT
{ SWAP ;
DIG 3 ;
DIG 7 ;
DIG 8 ;
DIG 9 ;
DROP 5 ;
IF_LEFT
{ DIG 3 ;
DROP ;
IF_LEFT
{ SWAP ;
DUP ;
DIG 2 ;
NIL (pair (pair address nat) nat) ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
ITER { SWAP ;
DUP 4 ;
DUP 3 ;
CAR ;
PAIR ;
DUP 8 ;
SWAP ;
EXEC ;
DIG 2 ;
DUP ;
CDR ;
DIG 2 ;
PAIR ;
DUP 7 ;
SWAP ;
EXEC ;
SWAP ;
PAIR ;
CONS } ;
DIG 2 ;
DIG 4 ;
DIG 5 ;
DROP 3 ;
NIL operation ;
DIG 2 ;
CDR ;
PUSH mutez 0 ;
DIG 3 ;
TRANSFER_TOKENS ;
CONS ;
PAIR }
{ DIG 2 ;
DIG 3 ;
DROP 2 ;
SWAP ;
SENDER ;
SWAP ;
DUP ;
DUG 2 ;
GET 13 ;
COMPARE ;
EQ ;
IF {} { PUSH string "NOT_ADMIN" ; FAILWITH } ;
DUP ;
DUP ;
DUG 2 ;
GET 7 ;
DUP 3 ;
GET 11 ;
DIG 4 ;
SWAP ;
PAIR ;
DIG 3 ;
GET 11 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 7 ;
DUP ;
PUSH nat 1 ;
DIG 2 ;
GET 11 ;
ADD ;
UPDATE 11 ;
NIL operation ;
PAIR } }
{ IF_LEFT
{ DIG 2 ;
DIG 4 ;
DROP 2 ;
UNPAIR ;
DUP 3 ;
SWAP ;
PAIR ;
DIG 3 ;
SWAP ;
EXEC ;
DIG 2 ;
NIL operation ;
DIG 3 ;
PUSH mutez 0 ;
DIG 4 ;
TRANSFER_TOKENS ;
CONS ;
PAIR }
{ SWAP ;
SENDER ;
SWAP ;
DUP ;
DUG 2 ;
GET 13 ;
COMPARE ;
EQ ;
IF {} { PUSH string "NOT_ADMIN" ; FAILWITH } ;
SWAP ;
ITER { SWAP ;
DUP ;
GET 11 ;
DUP 3 ;
CAR ;
COMPARE ;
LT ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
PUSH nat 0 ;
DUP 3 ;
CAR ;
COMPARE ;
EQ ;
IF { PUSH string "MINT_FORBIDDEN" ; FAILWITH } {} ;
DUP ;
DUP 3 ;
GET 3 ;
PAIR ;
DUP 6 ;
SWAP ;
EXEC ;
DUP 3 ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
PAIR ;
DUP 5 ;
SWAP ;
EXEC ;
SWAP ;
DUP ;
CAR ;
DUP 5 ;
GET 4 ;
DIG 3 ;
ADD ;
DUP 5 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 ;
SWAP ;
DUP ;
DUG 2 ;
DUP 4 ;
CAR ;
PAIR ;
DUP 6 ;
SWAP ;
EXEC ;
DUP ;
DUP 5 ;
GET 4 ;
DIG 2 ;
ADD ;
UPDATE 0 ;
DIG 2 ;
DUP ;
CAR ;
DIG 3 ;
DUP 5 ;
GET 3 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 ;
DUP ;
GET 3 ;
DIG 2 ;
DIG 3 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 3 } ;
SWAP ;
DIG 2 ;
DIG 3 ;
DROP 3 ;
NIL operation ;
PAIR } } }
{ DIG 4 ;
DIG 5 ;
DIG 6 ;
DROP 3 ;
IF_LEFT
{ SWAP ;
DIG 4 ;
DROP 2 ;
IF_LEFT
{ DIG 3 ;
DIG 4 ;
DROP 2 ;
SWAP ;
DUP ;
SENDER ;
SWAP ;
GET 9 ;
SWAP ;
GET ;
IF_NONE { PUSH string "NOT_MINTER" ; FAILWITH } {} ;
PUSH nat 0 ;
DUP 4 ;
ITER { CDR ; ADD } ;
DUP 3 ;
GET 20 ;
MUL ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
SWAP ;
DUP ;
GET 9 ;
ITER { DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DUP ;
GET 20 ;
DUP 4 ;
DUP 4 ;
CDR ;
MUL ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
DIG 2 ;
CAR ;
SWAP ;
DIG 2 ;
PAIR ;
PAIR ;
DUP 4 ;
SWAP ;
EXEC }
{ SWAP ; DROP } } ;
SWAP ;
DROP ;
SWAP ;
ITER { DUP ; DUG 2 ; CAR ; DIG 2 ; CDR ; DIG 2 ; PAIR ; PAIR ; SWAP ; DUP ; DUG 2 ; SWAP ; EXEC } ;
SWAP ;
DROP ;
NIL operation ;
PAIR }
{ DIG 2 ;
DROP ;
DUP ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
SWAP ;
DUP ;
DUG 2 ;
DUP 6 ;
GET 15 ;
PAIR ;
CHAIN_ID ;
SELF_ADDRESS ;
PAIR ;
PAIR ;
PACK ;
DUP ;
DIG 5 ;
CDR ;
CAR ;
DIG 5 ;
CHECK_SIGNATURE ;
IF
{ DROP ;
DUP 3 ;
PUSH nat 1 ;
DUP 5 ;
GET 15 ;
ADD ;
UPDATE 15 ;
DUP 4 ;
GET 17 ;
DIG 3 ;
PAIR ;
DUP 3 ;
DUP 5 ;
GET 19 ;
DIG 2 ;
UNPAIR ;
SWAP ;
DUP ;
DUG 2 ;
DUP 5 ;
GET ;
IF_NONE { DIG 8 } { DIG 9 ; DROP } ;
SWAP ;
DUP ;
DUG 2 ;
SWAP ;
DUP ;
DUG 2 ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
DIG 5 ;
DIG 2 ;
UNPAIR ;
CDR ;
SWAP ;
GET ;
IF_NONE
{ DROP 2 ; UNIT }
{ DUG 2 ;
PAIR ;
PAIR ;
DUP 9 ;
SWAP ;
EXEC ;
IF { UNIT } { PUSH string "DUP_PERMIT" ; FAILWITH } } ;
DROP ;
DUP ;
CDR ;
NONE nat ;
NOW ;
PAIR ;
DIG 3 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
SWAP ;
CAR ;
PAIR ;
SOME ;
DIG 2 ;
UPDATE ;
DIG 2 ;
DIG 3 ;
GET 19 ;
DUP 3 ;
DUP 3 ;
GET ;
IF_NONE
{ SWAP ; DIG 4 ; DROP 3 }
{ DUP ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
ITER { DUP ;
DUG 2 ;
CDR ;
DUP 4 ;
CAR ;
DUP 6 ;
PAIR ;
PAIR ;
DUP 9 ;
SWAP ;
EXEC ;
IF
{ SWAP ;
CAR ;
NONE (pair timestamp (option nat)) ;
SWAP ;
UPDATE }
{ SWAP ; DROP } } ;
DIG 2 ;
DIG 6 ;
DROP 2 ;
DIG 3 ;
SWAP ;
DIG 2 ;
CAR ;
PAIR ;
SOME ;
DIG 2 ;
UPDATE } ;
UPDATE 17 }
{ SWAP ;
DIG 2 ;
DIG 3 ;
DIG 4 ;
DIG 5 ;
DROP 5 ;
PUSH string "MISSIGNED" ;
PAIR ;
FAILWITH } ;
NIL operation ;
PAIR } }
{ DIG 3 ;
DROP ;
IF_LEFT
{ SWAP ;
DUG 2 ;
DUP ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PUSH string "NOT_PERMIT_ISSUER" ;
DIG 5 ;
PAIR ;
DUP 5 ;
DUP 4 ;
PAIR ;
PAIR ;
DIG 5 ;
SWAP ;
EXEC ;
DIG 3 ;
CDR ;
CDR ;
IF_NONE
{ DIG 3 ;
DIG 4 ;
DROP 2 ;
DUP ;
GET 17 ;
DIG 2 ;
DIG 3 ;
DIG 2 ;
DUP ;
DUP 3 ;
GET ;
IF_NONE { DIG 4 } { DIG 5 ; DROP } ;
CDR ;
DIG 3 ;
SOME ;
PAIR ;
SOME ;
DIG 2 ;
UPDATE }
{ DIG 6 ;
DROP ;
DIG 4 ;
GET 19 ;
DUP 3 ;
GET 17 ;
DIG 4 ;
PAIR ;
DIG 2 ;
DIG 4 ;
DIG 2 ;
UNPAIR ;
PUSH nat 2592000 ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
LT ;
IF
{ SWAP ;
DUP ;
DUG 2 ;
DUP 4 ;
GET ;
IF_NONE
{ DIG 2 ; DIG 3 ; DIG 4 ; DIG 6 ; DROP 5 }
{ DUP ;
CDR ;
DUP 6 ;
GET ;
IF_NONE
{ SWAP ; DIG 3 ; DIG 4 ; DIG 5 ; DIG 7 ; DROP 6 }
{ DUP ;
DUP 3 ;
CAR ;
DIG 8 ;
PAIR ;
PAIR ;
DIG 8 ;
SWAP ;
EXEC ;
IF
{ DIG 2 ; DIG 5 ; DROP 3 }
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
DIG 3 ;
DIG 2 ;
DUP ;
CAR ;
NOW ;
SUB ;
DUP 3 ;
INT ;
SWAP ;
COMPARE ;
GE ;
IF
{ DROP 2 ;
NONE (pair timestamp (option nat)) }
{ SWAP ; SOME ; SWAP ; CAR ; PAIR ; SOME } ;
DIG 5 ;
UPDATE ;
SWAP ;
CAR ;
PAIR } ;
SOME ;
DIG 2 ;
UPDATE } } }
{ SWAP ;
DIG 2 ;
DIG 3 ;
DIG 4 ;
DIG 6 ;
DROP 6 ;
PUSH string "EXPIRY_TOO_BIG" ;
FAILWITH } } ;
UPDATE 17 ;
NIL operation ;
PAIR }
{ SWAP ;
DIG 3 ;
DIG 4 ;
DIG 5 ;
DROP 4 ;
SWAP ;
DUP ;
GET 13 ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ;
PUSH nat 0 ;
UPDATE 20 ;
EMPTY_MAP address nat ;
UPDATE 9 ;
SWAP ;
ITER { SWAP ;
DUP ;
GET 9 ;
DUP 3 ;
CDR ;
DUP 4 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 9 ;
DUP ;
DIG 2 ;
CDR ;
DIG 2 ;
GET 20 ;
ADD ;
UPDATE 20 } ;
NIL operation ;
PAIR } } } }
{ DIG 3 ;
DIG 5 ;
DIG 8 ;
DIG 9 ;
DROP 4 ;
IF_LEFT
{ IF_LEFT
{ DUG 2 ;
SWAP ;
DUP 3 ;
PUSH bool True ;
SWAP ;
DUP ;
DUG 2 ;
ITER { SWAP ;
DUP 4 ;
DIG 2 ;
SENDER ;
SWAP ;
CAR ;
DIG 2 ;
SWAP ;
DUP ;
DUG 2 ;
PAIR ;
DUP 10 ;
SWAP ;
EXEC ;
CDR ;
DUP 3 ;
MEM ;
DUG 2 ;
COMPARE ;
EQ ;
OR ;
AND } ;
IF
{ DIG 2 ; DIG 6 ; DROP 3 }
{ IF_CONS
{ CAR ;
PUSH string "FA2_NOT_OPERATOR1" ;
DIG 4 ;
PAIR ;
DIG 3 ;
DUP 3 ;
PAIR ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
DIG 2 ;
ITER { DUP 3 ;
SWAP ;
CAR ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_NOT_OPERATOR2" ; FAILWITH } {} } ;
SWAP ;
DROP }
{ SWAP ; DIG 5 ; DROP 2 } } ;
SWAP ;
ITER { DUP ;
DUG 2 ;
CDR ;
ITER { SWAP ;
DUP ;
DUP 4 ;
CAR ;
PAIR ;
DUP 6 ;
SWAP ;
EXEC ;
SWAP ;
DUP ;
DUG 2 ;
GET 11 ;
DUP 4 ;
GET 3 ;
COMPARE ;
LT ;
IF
{}
{ PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP 3 ;
GET 3 ;
SWAP ;
DUP ;
DUG 2 ;
PAIR ;
DUP 6 ;
SWAP ;
EXEC ;
DUP 4 ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
LT ;
IF
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH }
{} ;
SWAP ;
DUP ;
CAR ;
DUP 5 ;
GET 4 ;
DIG 3 ;
SUB ;
ABS ;
DUP 5 ;
GET 3 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 ;
SWAP ;
DUP ;
CAR ;
DIG 2 ;
DUP 5 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 ;
DUP ;
DUP 3 ;
CAR ;
PAIR ;
DUP 6 ;
SWAP ;
EXEC ;
DUP 3 ;
GET 3 ;
SWAP ;
DUP ;
DUG 2 ;
PAIR ;
DUP 6 ;
SWAP ;
EXEC ;
SWAP ;
DUP ;
CAR ;
DUP 5 ;
GET 4 ;
DIG 3 ;
ADD ;
DUP 5 ;
GET 3 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 ;
SWAP ;
DUP ;
CAR ;
DIG 2 ;
DIG 3 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 } ;
SWAP ;
DROP } ;
SWAP ;
DIG 2 ;
DROP 2 ;
NIL operation ;
PAIR }
{ SWAP ;
DIG 3 ;
DIG 4 ;
DIG 5 ;
DROP 4 ;
SWAP ;
DUP ;
GET 13 ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ;
SWAP ;
UPDATE 13 ;
NIL operation ;
PAIR } }
{ DIG 3 ;
DROP ;
IF_LEFT
{ SWAP ;
DIG 3 ;
DIG 4 ;
DROP 3 ;
SWAP ;
DUP ;
GET 13 ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ;
DUP ;
DUP 3 ;
CAR ;
SWAP ;
GET 9 ;
SWAP ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
PUSH nat 0 ;
DUP 4 ;
CDR ;
COMPARE ;
NEQ ;
IF
{ PUSH nat 0 ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
GT ;
IF
{ SWAP ;
DUP ;
DUG 2 ;
SWAP ;
DIG 2 ;
GET 20 ;
SUB ;
ABS ;
UPDATE 20 ;
DUP ;
GET 9 ;
DUP 3 ;
CAR ;
NONE nat ;
SWAP ;
UPDATE ;
UPDATE 9 }
{ DROP } ;
DUP ;
GET 9 ;
DUP 3 ;
CDR ;
DUP 4 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 9 ;
DUP ;
DIG 2 ;
CDR ;
DIG 2 ;
GET 20 ;
ADD ;
UPDATE 20 }
{ SWAP ;
DUP ;
GET 9 ;
DIG 3 ;
CAR ;
NONE nat ;
SWAP ;
UPDATE ;
UPDATE 9 ;
DUP ;
DUG 2 ;
GET 20 ;
SUB ;
ABS ;
UPDATE 20 } ;
NIL operation ;
PAIR }
{ DIG 2 ;
PUSH string "NOT_TOKEN_OWNER" ;
DIG 3 ;
PAIR ;
SWAP ;
SENDER ;
PAIR ;
PAIR ;
DIG 3 ;
SWAP ;
EXEC ;
SWAP ;
ITER { IF_LEFT
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_NOT_OWNER" ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
PAIR ;
DUP 4 ;
SWAP ;
EXEC ;
DIG 2 ;
DUP ;
CAR ;
DIG 2 ;
DUP ;
CDR ;
DUP 5 ;
GET 3 ;
PUSH bool True ;
SWAP ;
UPDATE ;
UPDATE 2 ;
DIG 3 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 }
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_NOT_OWNER" ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
PAIR ;
DUP 4 ;
SWAP ;
EXEC ;
DIG 2 ;
DUP ;
CAR ;
DIG 2 ;
DUP ;
CDR ;
DUP 5 ;
GET 3 ;
PUSH bool False ;
SWAP ;
UPDATE ;
UPDATE 2 ;
DIG 3 ;
CAR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 1 } } ;
SWAP ;
DROP ;
NIL operation ;
PAIR } } } }