x
94
parameter (or (bytes %set_bools) (or (bytes %set_rects) (or (pair %set_bools_and_rects bytes bytes) (or (address %set_writer) (or (address %set_reader) (or (key %set_reader_pubkey) (unit %read)))))));storage (pair (address %admin) (pair (address %writer) (pair (address %reader) (pair (key %reader_pubkey) (pair (bytes %bools) (bytes %rects))))));code { LAMBDA (pair address (pair address (pair address (pair key (pair bytes bytes))))) unit { CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; UNIT } ; LAMBDA (pair address (pair address (pair address (pair key (pair bytes bytes))))) unit { GET 3 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_WRITER" ; FAILWITH } {} ; UNIT } ; DIG 2 ; UNPAIR ; IF_LEFT { DIG 3 ; DROP ; DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 9 ; NIL operation ; UNIT ; EMIT %bools_changed unit ; CONS } { IF_LEFT { DIG 3 ; DROP ; DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 10 ; NIL operation ; UNIT ; EMIT %rects_changed unit ; CONS } { IF_LEFT { DIG 3 ; DROP ; UNPAIR ; DUP 3 ; DIG 4 ; SWAP ; EXEC ; DROP ; NIL operation ; UNIT ; EMIT %rects_changed unit ; CONS ; UNIT ; EMIT %bools_changed unit ; CONS ; DIG 3 ; DIG 2 ; UPDATE 9 ; DIG 2 ; UPDATE 10 ; SWAP } { DIG 2 ; DROP ; IF_LEFT { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 3 ; NIL operation } { IF_LEFT { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 5 ; NIL operation } { IF_LEFT { DUP 2 ; DIG 3 ; SWAP ; EXEC ; DROP ; UPDATE 7 ; NIL operation } { DROP ; SWAP ; DROP ; DUP ; GET 5 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_READER" ; FAILWITH } {} ; NIL operation ; UNIT ; EMIT %rects_changed unit ; CONS ; UNIT ; EMIT %bools_changed unit ; CONS } } } } } } ; PAIR }