x
48
parameter (option key_hash);storage (pair (pair %mgr1 (address %addr) (option %key key_hash)) (pair %mgr2 (address %addr) (option %key key_hash)));code { DUP ; { CDR ; CAR ; CAR %addr @% } ; SENDER ; PAIR %@ %@ ; { { DUP ; CAR ; DIP { CDR } } } ; { COMPARE ; EQ ; IF { { { DUP ; CAR ; DIP { CDR } } } ; SWAP ; { DUP ; DIP { CAR @%% ; { DUP ; CDR %key ; DROP ; CAR @%% ; PAIR %@ %key } } ; CDR @%% ; SWAP ; PAIR %@ %@ @changed_mgr1_key } } { DUP ; { CDR ; CDR ; CAR } ; SENDER ; { COMPARE ; EQ ; IF { { { DUP ; CAR ; DIP { CDR } } } ; SWAP ; { DUP ; DIP { CDR @%% ; { DUP ; CDR %key ; DROP ; CAR @%% ; PAIR %@ %key } } ; CAR @%% ; PAIR %@ %@ } } { { UNIT ; FAILWITH } } } } } ; DUP ; { CAR ; CDR } ; DIP { DUP ; { CDR ; CDR } } ; IF_NONE { IF_NONE { NONE key_hash ; SET_DELEGATE ; NIL operation ; SWAP ; CONS } { DROP ; NIL operation } } { SWAP ; { IF_NONE { DROP ; NIL operation } { DIP { DUP } ; { COMPARE ; EQ ; IF { SOME ; SET_DELEGATE ; NIL operation ; SWAP ; CONS } { DROP ; NIL operation } } } } } ; PAIR }