x
157
{ parameter (or (or (or (bytes %set_metadata_uri) (address %declare_ownership)) (or (unit %claim_ownership) (address %add_whitelister))) (or (or (address %rm_whitelister) (address %remove)) (or (pair %put (address %k) (nat %v)) (pair %update (address %k) (option %v nat))))) ; storage (pair (address %admin) (pair (option %owner_candidate address) (pair (set %whitelister address) (pair (big_map %users address nat) (big_map %metadata string bytes))))) ; code { UNPAIR ; DIP { UNPAIR 5 } ; IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DIG 5 ; DUP 2 ; SOME ; PUSH string "" ; UPDATE ; DUG 5 ; DROP ; PAIR 5 ; NIL operation ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP ; SOME ; DIP { DIG 2 ; DROP } ; DUG 2 ; DROP ; PAIR 5 ; NIL operation ; PAIR } } { IF_LEFT { DROP ; DUP 2 ; IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP 2 ; IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ; SWAP ; DROP ; NONE address ; DIP { DIG 1 ; DROP } ; DUG 1 ; PAIR 5 ; NIL operation ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP 4 ; DUP 2 ; MEM ; IF { PUSH string "whitelister" ; PUSH string "KeyExists" ; PAIR ; FAILWITH } { DUP 4 ; PUSH bool True ; DUP 3 ; UPDATE ; DIP { DIG 3 ; DROP } ; DUG 3 } ; DROP ; PAIR 5 ; NIL operation ; PAIR } } } { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DUP 4 ; PUSH bool False ; DUP 3 ; UPDATE ; DIP { DIG 3 ; DROP } ; DUG 3 ; DROP ; PAIR 5 ; NIL operation ; PAIR } { DUP 4 ; SENDER ; MEM ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DIG 4 ; NONE nat ; DUP 3 ; UPDATE ; DUG 4 ; DROP ; PAIR 5 ; NIL operation ; PAIR } } { IF_LEFT { UNPAIR ; SWAP ; DUP 5 ; SENDER ; MEM ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DIG 5 ; DUP 2 ; SOME ; DUP 4 ; UPDATE ; DUG 5 ; DROP 2 ; PAIR 5 ; NIL operation ; PAIR } { UNPAIR ; SWAP ; DUP 5 ; SENDER ; MEM ; NOT ; IF { PUSH string "InvalidCaller" ; FAILWITH } {} ; DIG 5 ; DUP 2 ; DUP 4 ; UPDATE ; DUG 5 ; DROP 2 ; PAIR 5 ; NIL operation ; PAIR } } } } ; view "getopt" address (option nat) { UNPAIR ; DIP { CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP } ; UNIT ; DUP 3 ; DUP 3 ; GET ; SWAP ; DROP ; DIP { DROP 2 } } }