x
103
{ parameter (or (or (nat %adjust_price) (unit %default)) (or (address %propose_administrator) (or (address %remove_administrator) (unit %set_administrator)))) ; storage (pair (big_map %administrators address int) (nat %price)) ; code { LAMBDA (pair unit (pair (big_map address int) nat)) (pair unit (pair (big_map address int) nat)) { CDR ; DUP ; CAR ; PUSH int 1 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 21 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; UPDATE 2 ; NIL operation } { DROP ; SWAP ; DROP ; NIL operation ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 343 ; FAILWITH } {} ; AMOUNT ; UNIT ; TRANSFER_TOKENS ; CONS } } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; 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 { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CAR ; NONE int ; DIG 3 ; UPDATE ; UPDATE 1 } { DROP ; SWAP ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; CAR ; PUSH int 0 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 46 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 405 ; FAILWITH } ; DUP ; CAR ; PUSH (option int) (Some 1) ; SENDER ; UPDATE ; UPDATE 1 } } ; NIL operation } ; PAIR } ; view "get_price" unit nat { CDR ; CDR } }