x
219
parameter (or (or (or (unit %default) (address %propose_administrator)) (or (address %remove_administrator) (address %remove_manager))) (or (or (unit %set_administrator) (option %set_delegate key_hash)) (or (address %set_manager) (nat %sponsor_me))));storage (pair (big_map %administrators address int) (big_map %managers address unit));code { LAMBDA (pair unit (pair (big_map address int) (big_map address unit))) (pair unit (pair (big_map address int) (big_map address unit))) { CDR ; DUP ; CAR ; SENDER ; MEM ; IF {} { PUSH string "Unauthorized" ; FAILWITH } ; PUSH int 1 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { PUSH int 19 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "Unauthorized. Proposal is still pending." ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (big_map address int) (big_map address unit))) (pair unit (pair (big_map address int) (big_map address unit))) { CDR ; DUP ; CDR ; SENDER ; MEM ; IF {} { PUSH string "Unauthorized" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; SWAP ; DROP } { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "No tez accepted" ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CAR ; PUSH (option int) (Some 0) ; DIG 3 ; UPDATE ; UPDATE 1 } } { IF_LEFT { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "No tez accepted" ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CAR ; NONE int ; DIG 3 ; UPDATE ; UPDATE 1 } { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "No tez accepted" ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; DUP 2 ; CDR ; DUP 2 ; MEM ; IF {} { PUSH string "Manager not found." ; FAILWITH } ; SWAP ; DUP ; CDR ; NONE unit ; DIG 3 ; UPDATE ; UPDATE 2 } } ; NIL operation } { IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; SWAP ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "No tez accepted" ; FAILWITH } ; DUP ; CAR ; SENDER ; MEM ; IF {} { PUSH string "Unauthorized" ; FAILWITH } ; PUSH int 0 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { PUSH int 42 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "Not a proposed administrator" ; FAILWITH } ; DUP ; CAR ; PUSH (option int) (Some 1) ; SENDER ; UPDATE ; UPDATE 1 ; NIL operation } { DIG 2 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; SET_DELEGATE ; NIL operation ; SWAP ; CONS } } { IF_LEFT { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "No tez accepted" ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CDR ; PUSH (option unit) (Some Unit) ; DIG 3 ; UPDATE ; UPDATE 2 ; NIL operation } { DIG 3 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "No tez accepted" ; FAILWITH } ; DUP ; INT ; GT ; IF {} { PUSH string "The requested amount can't be 0." ; FAILWITH } ; PUSH mutez 1 ; SWAP ; MUL ; DUP ; BALANCE ; COMPARE ; GE ; IF {} { PUSH string "The requested amount is too large." ; FAILWITH } ; NIL operation ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 20 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } } } ; PAIR }