x
447
1347
{ parameter (or (or (or (pair %configure_channel (or %access_mode (or (unit %allowlist) (unit %blocklist)) (or (unit %members_only) (unit %unrestricted))) (pair (nat %channel_id) (pair (option %merkle_root bytes) (option %merkle_uri bytes)))) (or (bytes %create_channel) (nat %delete_channel))) (or (nat %delete_message) (or (nat %execute_proposal) (nat %hide_channel)))) (or (or (pair %post_message (nat %channel_id) (pair (bytes %content) (pair (option %parent_id nat) (option %proof (list (pair (nat %direction) (bytes %hash))))))) (or (or %submit_proposal (or (mutez %set_channel_fee) (or (address %set_fee_recipient) (mutez %set_message_fee))) (or (bool %set_pause) (or (pair %update_metadata (string %key) (bytes %value)) (address %update_multisig_address)))) (pair %update_blocklist (nat %channel_id) (pair (list %to_block address) (list %to_unblock address))))) (or (pair %update_channel (nat %channel_id) (bytes %metadata_uri)) (or (pair %update_channel_admins (nat %channel_id) (pair (list %to_add address) (list %to_remove address))) (pair %vote_proposal (nat %proposal_id) (bool %approval)))))) ; storage (pair (big_map %blocked (pair (address %address) (nat %channel_id)) unit) (pair (big_map %channel_admins (pair (address %address) (nat %channel_id)) unit) (pair (mutez %channel_fee) (pair (nat %channel_id_counter) (pair (big_map %channels nat (pair (or %access_mode (or (unit %allowlist) (unit %blocklist)) (or (unit %members_only) (unit %unrestricted))) (pair (address %creator) (pair (bool %hidden) (pair (option %merkle_root bytes) (pair (option %merkle_uri bytes) (pair (nat %message_count) (pair (bytes %metadata_uri) (timestamp %timestamp))))))))) (pair (nat %counter) (pair (address %fee_recipient) (pair (mutez %message_fee) (pair (nat %message_id_counter) (pair (big_map %messages nat (pair (nat %channel_id) (pair (bytes %content) (pair (option %parent_id nat) (pair (address %sender) (timestamp %timestamp)))))) (pair (big_map %metadata string bytes) (pair (address %multisig_address) (pair (bool %paused) (pair (big_map %proposals nat (pair (or %action (or (mutez %set_channel_fee) (or (address %set_fee_recipient) (mutez %set_message_fee))) (or (bool %set_pause) (or (pair %update_metadata (string %key) (bytes %value)) (address %update_multisig_address)))) (pair (bool %executed) (pair (address %issuer) (pair (timestamp %timestamp) (pair (nat %positive_votes) (nat %negative_votes))))))) (big_map %votes (pair nat address) bool))))))))))))))) ; code { LAMBDA (pair nat (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { UNPAIR ; DUP 2 ; GET 9 ; DUP 2 ; GET ; IF_NONE { PUSH int 233 ; FAILWITH } {} ; DUP 2 ; SENDER ; PAIR ; SENDER ; DUP 3 ; GET 3 ; COMPARE ; EQ ; IF { DROP 3 ; PUSH bool True } { SWAP ; DROP ; SWAP ; DROP ; DUP 2 ; GET 3 ; SWAP ; MEM } ; IF {} { PUSH string "NOT_CHANNEL_ADMIN" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { CDR ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "TEZ_TRANSFER" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair timestamp (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { UNPAIR ; DUP 2 ; GET 23 ; UNIT ; VIEW "get_expiration_time" nat ; IF_NONE { PUSH string "CHANNELS_GET_EXPIRATION_FAILED" ; FAILWITH } {} ; PUSH nat 86400 ; SWAP ; MUL ; INT ; ADD ; NOW ; COMPARE ; GT ; IF { PUSH string "CHANNELS_PROPOSAL_EXPIRED" ; FAILWITH } {} ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { CDR ; DUP ; GET 25 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair mutez (pair (list operation) (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool))))))))))))))))) (pair unit (pair (list operation) (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool))))))))))))))))) { UNPAIR 3 ; SWAP ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { DUP 3 ; GET 13 ; CONTRACT unit ; IF_NONE { PUSH int 227 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { SWAP ; DROP } ; UNIT ; PAIR 3 } ; SWAP ; LAMBDA (pair (pair bytes (list (pair nat bytes))) (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { UNPAIR ; SENDER ; PACK ; BLAKE2B ; DUP 2 ; CDR ; ITER { PUSH nat 0 ; DUP 2 ; CAR ; COMPARE ; EQ ; IF { CDR ; CONCAT ; BLAKE2B } { CDR ; SWAP ; CONCAT ; BLAKE2B } } ; SWAP ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "INVALID_MERKLE_PROOF" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair (pair nat (pair bytes (option nat))) (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair nat (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { UNPAIR ; DUP 2 ; GET 17 ; DIG 2 ; DUP ; GET 19 ; NOW ; SENDER ; DUP 6 ; GET 4 ; DUP 7 ; GET 3 ; DUP 8 ; CAR ; PAIR 5 ; SOME ; DUP 4 ; UPDATE ; UPDATE 19 ; DUG 2 ; DUP 3 ; GET 9 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 250 ; FAILWITH } {} ; DIG 3 ; DUP ; GET 9 ; DUP 3 ; GET 14 ; DUP 4 ; GET 13 ; PUSH nat 1 ; DUP 6 ; GET 11 ; ADD ; DUP 6 ; GET 9 ; DUP 7 ; GET 7 ; DUP 8 ; GET 5 ; DUP 9 ; GET 3 ; DUP 10 ; CAR ; PAIR 8 ; DIG 3 ; DROP ; SOME ; DIG 4 ; CAR ; UPDATE ; UPDATE 9 ; DUP ; GET 17 ; PUSH nat 1 ; ADD ; UPDATE 17 ; SWAP ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { CDR ; DUP ; GET 23 ; SENDER ; VIEW "is_user" bool ; IF_NONE { PUSH string "CHANNELS_VIEW_FAILED" ; FAILWITH } {} ; IF {} { PUSH string "CHANNELS_NOT_MULTISIG_USER" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) (pair nat (pair (big_map (pair address nat) unit) (pair (big_map (pair address nat) unit) (pair mutez (pair nat (pair (big_map nat (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp)))))))) (pair nat (pair address (pair mutez (pair nat (pair (big_map nat (pair nat (pair bytes (pair (option nat) (pair address timestamp))))) (pair (big_map string bytes) (pair address (pair bool (pair (big_map nat (pair (or (or mutez (or address mutez)) (or bool (or (pair string bytes) address))) (pair bool (pair address (pair timestamp (pair nat nat)))))) (big_map (pair nat address) bool)))))))))))))))) { CDR ; DUP ; GET 23 ; UNIT ; VIEW "get_minimum_votes" nat ; IF_NONE { PUSH string "CHANNELS_GET_MIN_VOTES_FAILED" ; FAILWITH } {} ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 10 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 9 ; DUP 2 ; GET 3 ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; GET 3 ; GET ; IF_NONE { PUSH int 323 ; FAILWITH } {} ; DUP 12 ; DUP 3 ; GET 3 ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 11 ; DUG 11 ; DUG 11 ; DIG 9 ; DIG 11 ; DIG 11 ; DUP ; GET 5 ; IF { PUSH string "CHANNEL_HIDDEN" ; FAILWITH } {} ; DUP 2 ; CAR ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } ; IF { DUP 2 ; GET 5 ; IF_NONE {} { PUSH string "UNRESTRICTED_NO_ROOT" ; FAILWITH } } {} ; DUP 2 ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } { DROP ; PUSH bool False } ; IF { DUP 2 ; GET 5 ; IF_NONE { PUSH string "ALLOWLIST_NEEDS_ROOT" ; FAILWITH } { DROP } } {} ; DUP 2 ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } { DROP ; PUSH bool False } ; IF { DUP 2 ; GET 5 ; IF_NONE {} { PUSH string "BLOCKLIST_NO_ROOT" ; FAILWITH } } {} ; DUP 2 ; CAR ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } ; IF { DUP 2 ; GET 5 ; IF_NONE {} { PUSH string "MEMBERS_ONLY_NO_ROOT" ; FAILWITH } } {} ; DIG 2 ; DUP ; GET 9 ; DUP 3 ; GET 14 ; DUP 4 ; GET 13 ; DUP 5 ; GET 11 ; DUP 7 ; GET 6 ; DUP 8 ; GET 5 ; DUP 8 ; GET 5 ; DUP 9 ; GET 3 ; DUP 11 ; CAR ; PAIR 8 ; SOME ; DUP 5 ; GET 3 ; UPDATE ; UPDATE 9 ; DUG 2 ; NIL operation ; DUP ; DUP 4 ; GET 6 ; DUP 5 ; GET 5 ; SENDER ; DUP 7 ; GET 3 ; DUP 8 ; CAR ; PAIR 5 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; EMIT %channel_configured (pair (or %access_mode (or (unit %allowlist) (unit %blocklist)) (or (unit %members_only) (unit %unrestricted))) (pair (nat %channel_id) (pair (address %configured_by) (pair (option %merkle_root bytes) (option %merkle_uri bytes))))) ; CONS } { IF_LEFT { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; PUSH nat 0 ; DUP 2 ; SIZE ; COMPARE ; GT ; IF {} { PUSH string "EMPTY_METADATA" ; FAILWITH } ; DUP 2 ; GET 5 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "INCORRECT_FEE" ; FAILWITH } ; NIL operation ; DUP 8 ; DUP 4 ; GET 5 ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DUG 11 ; DUG 11 ; DUG 11 ; DIG 10 ; DIG 11 ; DIG 11 ; DUP 3 ; GET 7 ; DIG 3 ; DUP ; GET 9 ; NOW ; DUP 6 ; PUSH nat 0 ; NONE bytes ; NONE bytes ; PUSH bool False ; SENDER ; PUSH (or (or unit unit) (or unit unit)) (Right (Right Unit)) ; PAIR 8 ; SOME ; DUP 4 ; UPDATE ; UPDATE 9 ; DUP ; GET 7 ; PUSH nat 1 ; ADD ; UPDATE 7 ; DUG 3 ; DUP 2 ; NOW ; DUP 5 ; SENDER ; DUP 5 ; PAIR 4 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; EMIT %channel_created (pair (nat %channel_id) (pair (address %creator) (pair (bytes %metadata_uri) (timestamp %timestamp)))) ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DIG 2 ; SWAP ; DIG 2 ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; DUP 2 ; GET 9 ; DUP 2 ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; GET ; IF_NONE { PUSH int 569 ; FAILWITH } {} ; GET 3 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_CHANNEL_CREATOR" ; FAILWITH } ; SWAP ; DUP ; GET 9 ; NONE (pair (or (or unit unit) (or unit unit)) (pair address (pair bool (pair (option bytes) (pair (option bytes) (pair nat (pair bytes timestamp))))))) ; DUP 4 ; UPDATE ; UPDATE 9 ; SWAP ; NIL operation ; SENDER ; DIG 2 ; PAIR ; EMIT %channel_deleted (pair (nat %channel_id) (address %deleted_by)) ; CONS } } } { IF_LEFT { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 10 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 19 ; DUP 2 ; MEM ; IF {} { PUSH string "MESSAGE_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 19 ; DUP 2 ; GET ; IF_NONE { PUSH int 475 ; FAILWITH } {} ; DUP 3 ; GET 9 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 3 ; GET 9 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 478 ; FAILWITH } {} ; SENDER ; DUP 3 ; GET 7 ; COMPARE ; EQ ; SENDER ; DUP 3 ; GET 3 ; COMPARE ; EQ ; DUP 4 ; CAR ; SENDER ; PAIR ; DUP 7 ; GET 3 ; DUP 2 ; MEM ; DUP 4 ; IF { PUSH bool True } { DUP 3 } ; IF { PUSH bool True } { DUP } ; IF {} { PUSH string "NOT_AUTHORIZED" ; FAILWITH } ; DIG 7 ; DUP ; GET 9 ; DUP 7 ; GET 14 ; DUP 8 ; GET 13 ; PUSH nat 1 ; DUP 10 ; GET 11 ; SUB ; ISNAT ; IF_NONE { PUSH string "UNDERFLOW" ; FAILWITH } {} ; DUP 10 ; GET 9 ; DUP 11 ; GET 7 ; DUP 12 ; GET 5 ; DUP 13 ; GET 3 ; DUP 14 ; CAR ; PAIR 8 ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; SOME ; DUP 4 ; CAR ; UPDATE ; UPDATE 9 ; DUP ; GET 19 ; NONE (pair nat (pair bytes (pair (option nat) (pair address timestamp)))) ; DUP 5 ; UPDATE ; UPDATE 19 ; DUG 2 ; NIL operation ; DIG 2 ; SENDER ; DIG 3 ; CAR ; PAIR 3 ; EMIT %message_deleted (pair (nat %channel_id) (pair (address %deleted_by) (nat %message_id))) ; CONS } { IF_LEFT { DUP 4 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 27 ; DUP 2 ; MEM ; IF {} { PUSH string "CHANNELS_NO_PROPOSAL" ; FAILWITH } ; DUP 2 ; GET 27 ; DUP 2 ; GET ; IF_NONE { PUSH int 638 ; FAILWITH } {} ; DUP ; GET 3 ; IF { PUSH string "CHANNELS_ALREADY_EXECUTED" ; FAILWITH } {} ; DUP 4 ; UNIT ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DUG 12 ; DUG 12 ; DUG 12 ; DUG 12 ; DIG 10 ; DIG 12 ; DIG 12 ; DIG 12 ; DUP 2 ; GET 9 ; COMPARE ; GE ; IF {} { PUSH string "CHANNELS_NOT_ENOUGH_VOTES" ; FAILWITH } ; DUP 10 ; SWAP ; DUP ; GET 7 ; DIG 2 ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 11 ; DUG 11 ; DUG 11 ; DIG 9 ; DIG 11 ; DIG 11 ; PUSH bool True ; UPDATE 3 ; DIG 2 ; DUP ; GET 27 ; DUP 3 ; SOME ; DUP 5 ; UPDATE ; UPDATE 27 ; DUG 2 ; DUP ; CAR ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } ; IF { DIG 2 ; DUP 2 ; CAR ; IF_LEFT { PUSH int 648 ; FAILWITH } { IF_LEFT {} { PUSH int 648 ; FAILWITH } } ; UPDATE 25 ; DUG 2 } {} ; DUP ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } } { DROP ; PUSH bool False } ; IF { DIG 2 ; DUP 2 ; CAR ; IF_LEFT { IF_LEFT { PUSH int 651 ; FAILWITH } { IF_LEFT { PUSH int 651 ; FAILWITH } {} } } { PUSH int 651 ; FAILWITH } ; UPDATE 15 ; DUG 2 } {} ; DUP ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } { DROP ; PUSH bool False } ; IF { DIG 2 ; DUP 2 ; CAR ; IF_LEFT { IF_LEFT {} { PUSH int 654 ; FAILWITH } } { PUSH int 654 ; FAILWITH } ; UPDATE 5 ; DUG 2 } {} ; DUP ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } } { DROP ; PUSH bool False } ; IF { DIG 2 ; DUP 2 ; CAR ; IF_LEFT { IF_LEFT { PUSH int 657 ; FAILWITH } { IF_LEFT {} { PUSH int 657 ; FAILWITH } } } { PUSH int 657 ; FAILWITH } ; UPDATE 13 ; DUG 2 } {} ; DUP ; CAR ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } } ; IF { DIG 2 ; DUP 2 ; CAR ; IF_LEFT { PUSH int 660 ; FAILWITH } { IF_LEFT { PUSH int 660 ; FAILWITH } { IF_LEFT { PUSH int 660 ; FAILWITH } {} } } ; UPDATE 23 ; DUG 2 } {} ; DUP ; CAR ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } } ; IF { SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; CAR ; IF_LEFT { PUSH int 663 ; FAILWITH } { IF_LEFT { PUSH int 663 ; FAILWITH } { IF_LEFT {} { PUSH int 663 ; FAILWITH } } } ; SWAP ; DUP ; GET 21 ; DUP 3 ; CDR ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 21 } { DROP 2 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; NIL operation } { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 10 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 9 ; DUP 2 ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; GET ; IF_NONE { PUSH int 539 ; FAILWITH } {} ; SENDER ; DUP 2 ; GET 3 ; COMPARE ; EQ ; IF {} { PUSH string "NOT_CHANNEL_CREATOR" ; FAILWITH } ; DIG 2 ; DUP ; GET 9 ; DUP 3 ; GET 14 ; DUP 4 ; GET 13 ; DUP 5 ; GET 11 ; DUP 6 ; GET 9 ; DUP 7 ; GET 7 ; PUSH bool True ; DUP 9 ; GET 3 ; DUP 10 ; CAR ; PAIR 8 ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SOME ; DUP 4 ; UPDATE ; UPDATE 9 ; SWAP ; NIL operation ; SENDER ; DIG 2 ; PAIR ; EMIT %channel_hidden (pair (nat %channel_id) (address %hidden_by)) ; CONS } } } } { IF_LEFT { IF_LEFT { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; PUSH nat 0 ; DUP 2 ; GET 3 ; SIZE ; COMPARE ; GT ; IF {} { PUSH string "EMPTY_CONTENT" ; FAILWITH } ; PUSH nat 32768 ; DUP 2 ; GET 3 ; SIZE ; COMPARE ; LE ; IF {} { PUSH string "CONTENT_TOO_LARGE" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 425 ; FAILWITH } {} ; DUP ; GET 5 ; IF { PUSH string "CHANNEL_HIDDEN" ; FAILWITH } {} ; DUP 2 ; GET 5 ; IF_NONE {} { DROP ; DUP 2 ; GET 5 ; IF_NONE { PUSH int 430 ; FAILWITH } {} ; DUP 4 ; GET 19 ; DUP 2 ; MEM ; IF {} { PUSH string "PARENT_NOT_FOUND" ; FAILWITH } ; DUP 4 ; GET 19 ; SWAP ; GET ; IF_NONE { PUSH int 432 ; FAILWITH } {} ; DUP 3 ; CAR ; SWAP ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "PARENT_WRONG_CHANNEL" ; FAILWITH } } ; DUP 2 ; CAR ; SENDER ; PAIR ; SENDER ; DUP 3 ; GET 3 ; COMPARE ; EQ ; IF { PUSH bool True } { DUP 4 ; GET 3 ; DUP 2 ; MEM } ; DUP ; IF {} { DUP 3 ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } { DROP ; PUSH bool False } ; IF { DUP 3 ; GET 7 ; IF_NONE { PUSH string "NO_MERKLE_ROOT" ; FAILWITH } {} ; DUP 5 ; GET 6 ; IF_NONE { PUSH string "PROOF_REQUIRED" ; FAILWITH } {} ; DUP 11 ; SWAP ; DIG 2 ; PAIR ; SWAP ; DIG 6 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 13 ; DUG 13 ; DUG 13 ; DUG 13 ; DUG 13 ; DIG 9 ; DIG 13 ; DIG 13 ; DIG 13 ; DIG 13 } {} ; DUP 3 ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } { DROP ; PUSH bool False } ; IF { DUP 4 ; CAR ; SENDER ; PAIR ; DUP 6 ; CAR ; SWAP ; MEM ; IF { PUSH string "ADDRESS_BLOCKED" ; FAILWITH } {} } {} ; DUP 3 ; CAR ; IF_LEFT { DROP ; PUSH bool False } { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } ; IF { PUSH bool False ; IF {} { PUSH string "MEMBERS_ONLY" ; FAILWITH } } {} } ; DUP 5 ; GET 15 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "INCORRECT_FEE" ; FAILWITH } ; NIL operation ; DUP 11 ; DUP 7 ; GET 15 ; SWAP ; DIG 7 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DUG 14 ; DUG 14 ; DUG 14 ; DUG 14 ; DUG 14 ; DUG 14 ; DIG 10 ; DIG 14 ; DIG 14 ; DIG 14 ; DIG 14 ; DIG 14 ; DUP 9 ; DUP 6 ; GET 5 ; DUP 7 ; GET 3 ; DUP 8 ; CAR ; PAIR 3 ; SWAP ; DIG 7 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DUG 15 ; DUG 15 ; DUG 15 ; DUG 15 ; DUG 15 ; DUG 15 ; DUG 15 ; DIG 10 ; DIG 15 ; DIG 15 ; DIG 15 ; DIG 15 ; DIG 15 ; DIG 15 ; DUP 2 ; NOW ; SENDER ; DUP 9 ; GET 5 ; DUP 5 ; DUP 11 ; GET 3 ; DUP 12 ; CAR ; PAIR 6 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; EMIT %message_posted (pair (nat %channel_id) (pair (bytes %content) (pair (nat %message_id) (pair (option %parent_id nat) (pair (address %sender) (timestamp %timestamp)))))) ; CONS } { IF_LEFT { DUP 4 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; DUP ; GET 27 ; PUSH nat 0 ; DUP ; NOW ; SENDER ; PUSH bool False ; DUP 8 ; PAIR 6 ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SOME ; DIG 3 ; GET 11 ; UPDATE ; UPDATE 27 ; DUP ; GET 11 ; PUSH nat 1 ; ADD ; UPDATE 11 ; NIL operation } { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 10 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 367 ; FAILWITH } {} ; DUP 12 ; DUP 3 ; CAR ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 11 ; DUG 11 ; DUG 11 ; DIG 9 ; DIG 11 ; DIG 11 ; DUP ; CAR ; IF_LEFT { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } { DROP ; PUSH bool False } ; IF {} { PUSH string "NOT_BLOCKLIST_MODE" ; FAILWITH } ; DUP 2 ; GET 3 ; ITER { DIG 3 ; DUP ; CAR ; PUSH (option unit) (Some Unit) ; DUP 6 ; CAR ; DIG 4 ; PAIR ; UPDATE ; UPDATE 1 ; DUG 2 } ; DUP 2 ; GET 4 ; ITER { DUP 4 ; CAR ; DUP 4 ; CAR ; DUP 3 ; PAIR ; MEM ; IF { DIG 3 ; DUP ; CAR ; NONE unit ; DUP 6 ; CAR ; DIG 4 ; PAIR ; UPDATE ; UPDATE 1 ; DUG 2 } { DROP } } ; NIL operation ; DUP ; SENDER ; DUP 5 ; GET 4 ; DUP 6 ; GET 3 ; DUP 7 ; CAR ; PAIR 4 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; EMIT %blocklist_updated (pair (nat %channel_id) (pair (list %to_block address) (pair (list %to_unblock address) (address %updated_by)))) ; CONS } } } { IF_LEFT { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 10 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 516 ; FAILWITH } {} ; SENDER ; DUP 2 ; GET 3 ; COMPARE ; EQ ; IF {} { PUSH string "NOT_CHANNEL_CREATOR" ; FAILWITH } ; PUSH nat 0 ; DUP 3 ; CDR ; SIZE ; COMPARE ; GT ; IF {} { PUSH string "EMPTY_METADATA" ; FAILWITH } ; DIG 2 ; DUP ; GET 9 ; DUP 3 ; GET 14 ; DUP 5 ; CDR ; DUP 5 ; GET 11 ; DUP 6 ; GET 9 ; DUP 7 ; GET 7 ; DUP 8 ; GET 5 ; DUP 9 ; GET 3 ; DUP 10 ; CAR ; PAIR 8 ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 9 ; NIL operation } { IF_LEFT { DUP 8 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 10 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 10 ; DUG 10 ; DIG 9 ; DIG 10 ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 396 ; FAILWITH } {} ; SENDER ; DUP 2 ; GET 3 ; COMPARE ; EQ ; IF {} { PUSH string "NOT_CHANNEL_CREATOR" ; FAILWITH } ; DUP 2 ; GET 3 ; ITER { DIG 3 ; DUP ; GET 3 ; PUSH (option unit) (Some Unit) ; DUP 6 ; CAR ; DIG 4 ; PAIR ; UPDATE ; UPDATE 3 ; DUG 2 } ; DUP 2 ; GET 4 ; ITER { DUP 4 ; GET 3 ; DUP 4 ; CAR ; DUP 3 ; PAIR ; MEM ; IF { DIG 3 ; DUP ; GET 3 ; NONE unit ; DUP 6 ; CAR ; DIG 4 ; PAIR ; UPDATE ; UPDATE 3 ; DUG 2 } { DROP } } ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; NIL operation ; SWAP ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; EMIT %channel_admins_updated (pair (nat %channel_id) (pair (list %to_add address) (list %to_remove address))) ; CONS } { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DIG 2 ; SWAP ; DIG 2 ; DUP 2 ; GET 27 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "CHANNELS_NO_PROPOSAL" ; FAILWITH } ; DUP 2 ; GET 27 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 610 ; FAILWITH } {} ; DUP ; GET 3 ; IF { PUSH string "CHANNELS_ALREADY_EXECUTED" ; FAILWITH } {} ; DIG 3 ; SWAP ; DUP ; GET 7 ; DIG 2 ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 2 ; SENDER ; DUP 3 ; CAR ; PAIR ; DUP 4 ; GET 28 ; DUP 2 ; MEM ; IF { DUP 4 ; GET 28 ; DUP 2 ; GET ; IF_NONE { PUSH int 617 ; FAILWITH } {} ; IF { PUSH nat 1 ; DUP 3 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 618 ; FAILWITH } {} ; DIG 2 ; SWAP ; UPDATE 9 ; SWAP } { PUSH nat 1 ; DUP 3 ; GET 10 ; SUB ; ISNAT ; IF_NONE { PUSH int 620 ; FAILWITH } {} ; DIG 2 ; SWAP ; UPDATE 10 ; SWAP } } {} ; DUP 3 ; CDR ; IF { SWAP ; DUP ; GET 9 ; PUSH nat 1 ; ADD ; UPDATE 9 ; SWAP } { SWAP ; DUP ; GET 10 ; PUSH nat 1 ; ADD ; UPDATE 10 ; SWAP } ; DIG 3 ; DUP ; GET 28 ; DUP 5 ; CDR ; SOME ; DIG 3 ; UPDATE ; UPDATE 28 ; DUP ; GET 27 ; DIG 2 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 27 ; NIL operation } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_channel" nat (pair (or %access_mode (or (unit %allowlist) (unit %blocklist)) (or (unit %members_only) (unit %unrestricted))) (pair (address %creator) (pair (bool %hidden) (pair (option %merkle_root bytes) (pair (option %merkle_uri bytes) (pair (nat %message_count) (pair (bytes %metadata_uri) (timestamp %timestamp)))))))) { UNPAIR ; DUP 2 ; GET 9 ; DUP 2 ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; SWAP ; GET 9 ; SWAP ; GET ; IF_NONE { PUSH int 675 ; FAILWITH } {} } ; view "get_message" nat (pair (nat %channel_id) (pair (bytes %content) (pair (option %parent_id nat) (pair (address %sender) (timestamp %timestamp))))) { UNPAIR ; DUP 2 ; GET 19 ; DUP 2 ; MEM ; IF {} { PUSH string "MESSAGE_NOT_FOUND" ; FAILWITH } ; SWAP ; GET 19 ; SWAP ; GET ; IF_NONE { PUSH int 682 ; FAILWITH } {} } ; view "get_message_fee" unit mutez { CDR ; GET 15 } ; view "get_channel_fee" unit mutez { CDR ; GET 5 } ; view "is_blocked" (pair (address %address) (nat %channel_id)) bool { UNPAIR ; SWAP ; CAR ; SWAP ; MEM } ; view "is_channel_admin" (pair (address %address) (nat %channel_id)) bool { UNPAIR ; DUP 2 ; GET 9 ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "CHANNEL_NOT_FOUND" ; FAILWITH } ; DUP 2 ; GET 9 ; DUP 2 ; CDR ; GET ; IF_NONE { PUSH int 705 ; FAILWITH } {} ; DUP 2 ; CDR ; DUP 3 ; CAR ; PAIR ; DUP 3 ; CAR ; DUP 3 ; GET 3 ; COMPARE ; EQ ; IF { DROP 4 ; PUSH bool True } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; GET 3 ; SWAP ; MEM } } ; view "get_proposal" nat (pair (or %action (or (mutez %set_channel_fee) (or (address %set_fee_recipient) (mutez %set_message_fee))) (or (bool %set_pause) (or (pair %update_metadata (string %key) (bytes %value)) (address %update_multisig_address)))) (pair (bool %executed) (pair (address %issuer) (pair (timestamp %timestamp) (pair (nat %positive_votes) (nat %negative_votes)))))) { UNPAIR ; DUP 2 ; GET 27 ; DUP 2 ; MEM ; IF {} { PUSH string "CHANNELS_NO_PROPOSAL" ; FAILWITH } ; SWAP ; GET 27 ; SWAP ; GET ; IF_NONE { PUSH int 714 ; FAILWITH } {} } ; view "get_vote" (pair nat address) bool { UNPAIR ; SWAP ; GET 28 ; SWAP ; GET ; IF_NONE { PUSH bool False } {} } }