x
753
1616
{ parameter (or (or (or (or (address %add_allowed_source) (or (pair %balance_of (list %requests (pair (address %owner) (nat %token_id))) (contract %callback (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) (pair %commit (nat %amount) (pair (nat %cooldown_duration) (option %stake_id nat))))) (or (nat %enter_cooldown) (or (lambda %execute unit (list operation)) (pair %internal_commit (address %owner) (pair %param (nat %amount) (pair (nat %cooldown_duration) (option %stake_id nat))))))) (or (or (pair %internal_enter_cooldown (address %owner) (nat %stake_id)) (or (pair %internal_kickout (address %kicker) (pair (address %owner) (nat %stake_id))) (pair %internal_recommit (address %owner) (nat %stake_id)))) (or (or (unit %internal_update_parameters) (pair %internal_withdraw (address %owner) (nat %stake_id))) (or (nat %kickout) (address %propose_administrator))))) (or (or (or (nat %recommit) (or (address %remove_administrator) (address %remove_allowed_source))) (or (or (nat %remove_token_metadata) (unit %set_administrator)) (or (list %set_token_balance (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))) (pair %set_token_metadata (nat %token_id) (map %token_info string bytes))))) (or (or (list %transfer (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) (or (pair %update_kicker_reward_ratio (nat %numerator) (nat %denominator)) (nat %update_max_withdraw_delay))) (or (or (list %update_operators (or (pair %add_operator (address %owner) (pair (address %operator) (nat %token_id))) (pair %remove_operator (address %owner) (pair (address %operator) (nat %token_id))))) (unit %update_parameters)) (or (pair %update_vote_scale_map (nat %epoch_length) (map %voting_scale_map nat (pair (nat %numerator) (nat %denominator)))) (nat %withdraw)))))) ; storage (pair (pair (pair (pair (big_map %administrators address nat) (big_map %allowed_sources address unit)) (pair (nat %current_token_balance) (nat %epoch_length))) (pair (pair (pair %kicker_reward_ratio (nat %numerator) (nat %denominator)) (big_map %ledger nat address)) (pair (nat %max_cooldown_duration) (pair (nat %max_withdraw_delay) (big_map %metadata string bytes))))) (pair (pair (pair (big_map %operators (pair (address %owner) (pair (address %operator) (nat %token_id))) unit) (nat %previous_token_balance)) (pair (nat %reward_factor) (pair (nat %stake_id_counter) (big_map %stakes nat (pair (nat %amount) (pair (nat %reward_weight) (pair (nat %accumulated_rewards) (pair (nat %cooldown_duration) (pair (option %cooldown_start_timestamp timestamp) (nat %reward_factor)))))))))) (pair (pair (address %token_address) (nat %token_id)) (pair (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes))) (pair (nat %total_reward_stake_weight) (map %voting_scale_map nat (pair (nat %numerator) (nat %denominator)))))))) ; code { LAMBDA (pair (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))) (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) (pair nat (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) { UNPAIR ; DUP ; GET 5 ; PUSH nat 1000000000000 ; DIG 2 ; DUP ; GET 3 ; SWAP ; GET 10 ; DUP 5 ; GET 3 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 239 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 239 ; FAILWITH } { CAR } ; ADD ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (list operation) (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat))))))))) (pair unit (pair (list operation) (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat))))))))) { CDR ; UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 5 ; CAR ; CONTRACT %balance_of (pair (list %requests (pair (address %owner) (nat %token_id))) (contract %callback (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) ; IF_NONE { PUSH int 112 ; FAILWITH } {} ; PUSH mutez 0 ; SELF_ADDRESS ; CONTRACT %set_token_balance (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))) ; IF_NONE { PUSH int 115 ; FAILWITH } {} ; NIL (pair address nat) ; DUP 6 ; GET 5 ; CDR ; SELF_ADDRESS ; PAIR ; CONS ; PAIR ; TRANSFER_TOKENS ; CONS ; UNIT ; PAIR 3 } ; SWAP ; LAMBDA (pair unit (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) (pair unit (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) { CDR ; DUP ; GET 9 ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP 6 ; GET 9 ; PUSH nat 1000000000000 ; DIG 7 ; DUP ; GET 3 ; CAR ; CDR ; SWAP ; CAR ; CAR ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH string "NegativeReward" ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 265 ; FAILWITH } { CAR } ; ADD ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; DIG 4 ; CAR ; CAR ; GET 3 ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR } {} ; UNIT ; PAIR } ; SWAP ; LAMBDA unit unit { DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ; SWAP ; LAMBDA (pair unit (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) (pair unit (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) { CDR ; DUP ; CAR ; CAR ; CAR ; CAR ; PUSH nat 1 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 21 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) (pair unit (pair (pair (pair (pair (big_map address nat) (big_map address unit)) (pair nat nat)) (pair (pair (pair nat nat) (big_map nat address)) (pair nat (pair nat (big_map string bytes))))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) nat) (pair nat (pair nat (big_map nat (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))))))) (pair (pair address nat) (pair (big_map nat (pair nat (map string bytes))) (pair nat (map nat (pair nat nat)))))))) { CDR ; DUP ; CAR ; CAR ; CAR ; CDR ; SENDER ; MEM ; IF {} { PUSH string "NotAllowedSource" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; PUSH (option unit) (Some Unit) ; DIG 6 ; UPDATE ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; NIL (pair (pair address nat) nat) ; SWAP ; DUP ; DUG 2 ; CAR ; ITER { DUP 4 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DUP ; CAR ; DUP 5 ; CAR ; GET 3 ; CDR ; DUP 3 ; CDR ; GET ; IF_NONE { PUSH int 684 ; FAILWITH } {} ; COMPARE ; EQ ; IF { SWAP ; PUSH nat 1 ; DIG 2 ; PAIR ; CONS } { SWAP ; PUSH nat 0 ; DIG 2 ; PAIR ; CONS } } ; DIG 3 ; DROP ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET 3 ; COMPARE ; LE ; IF {} { PUSH string "InvalidCooldownDuration" ; FAILWITH } ; DUP ; GET 4 ; IF_NONE { DUP ; CAR ; PUSH nat 100000000000 ; SWAP ; COMPARE ; GE ; IF {} { PUSH string "InsufficientStakedAmount" ; FAILWITH } } { DROP ; DUP ; GET 4 ; IF_NONE { PUSH int 326 ; FAILWITH } {} ; DUP 3 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "InvalidStakeId" ; FAILWITH } ; SENDER ; DUP 4 ; CAR ; GET 3 ; CDR ; DUP 3 ; GET ; IF_NONE { PUSH int 328 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "NotOwner" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; DUP 4 ; GET 3 ; GET 6 ; DUP 3 ; GET ; IF_NONE { PUSH int 330 ; FAILWITH } {} ; GET 7 ; COMPARE ; LE ; IF {} { PUSH string "InvalidCooldownDuration" ; FAILWITH } ; NONE timestamp ; DUP 4 ; GET 3 ; GET 6 ; DIG 2 ; GET ; IF_NONE { PUSH int 334 ; FAILWITH } {} ; GET 9 ; COMPARE ; EQ ; IF {} { PUSH string "InvalidState" ; FAILWITH } } ; NIL operation ; SELF %update_parameters ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS ; SELF %internal_commit ; PUSH mutez 0 ; DIG 3 ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS } } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "InvalidStakeId" ; FAILWITH } ; SENDER ; DUP 3 ; CAR ; GET 3 ; CDR ; DUP 3 ; GET ; IF_NONE { PUSH int 408 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "NotOwner" ; FAILWITH } ; NONE timestamp ; DUP 3 ; GET 3 ; GET 6 ; DUP 3 ; GET ; IF_NONE { PUSH int 410 ; FAILWITH } {} ; GET 9 ; COMPARE ; EQ ; IF {} { PUSH string "InvalidState" ; FAILWITH } ; NIL operation ; SELF %update_parameters ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS ; SELF %internal_enter_cooldown ; PUSH mutez 0 ; DIG 3 ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS } { IF_LEFT { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; NIL operation ; SWAP ; UNIT ; EXEC ; NIL operation ; SWAP ; ITER { CONS } ; ITER { CONS } } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP 5 ; UNIT ; EXEC ; PUSH nat 0 ; DUP 3 ; GET 3 ; COMPARE ; GT ; IF { NIL operation ; DUP 4 ; GET 5 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 7 ; GET 3 ; DUP 9 ; GET 5 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; DUP 7 ; CAR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { NIL operation } ; DIG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; DUP 8 ; GET 3 ; ADD ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 3 ; DUP 3 ; GET 6 ; IF_NONE { DUP 4 ; GET 3 ; GET 5 ; DUP 5 ; CAR ; GET 5 ; DIG 4 ; DUP ; GET 5 ; SWAP ; DUP ; DUG 6 ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 927 ; FAILWITH } { CAR } ; DUP 6 ; GET 3 ; GET 3 ; NONE timestamp ; DUP 7 ; GET 5 ; PUSH nat 0 ; DUP 5 ; DUP 10 ; GET 3 ; PAIR 6 ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 4 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; PUSH nat 1 ; ADD ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 9 ; DUP 3 ; GET 3 ; ADD ; UPDATE 9 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; DIG 8 ; CAR ; SOME ; DUP 8 ; UPDATE ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DIG 6 ; SOME ; DUP 8 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 7 ; PUSH (map string bytes) { Elt "" 0x00 } ; DUP 4 ; PAIR ; SOME ; DIG 3 ; UPDATE ; UPDATE 7 ; SWAP } { DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; SWAP ; DUP ; DUG 2 ; GET 6 ; IF_NONE { PUSH int 948 ; FAILWITH } {} ; DUP 4 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 949 ; FAILWITH } {} ; DIG 5 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 6 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 5 ; UPDATE 5 ; DUP 5 ; GET 3 ; GET 3 ; UPDATE 10 ; DUP 5 ; SWAP ; DUP ; DUG 2 ; GET 3 ; DIG 6 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 956 ; FAILWITH } {} ; UPDATE 9 ; DUG 4 ; DUP ; CAR ; DUP 5 ; GET 3 ; ADD ; UPDATE 1 ; DUP 5 ; CAR ; GET 5 ; DUP 5 ; GET 5 ; DUP 3 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 963 ; FAILWITH } { CAR } ; UPDATE 3 ; DIG 3 ; GET 5 ; UPDATE 7 ; DIG 3 ; DUP ; GET 9 ; DUP 3 ; GET 3 ; ADD ; UPDATE 9 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DIG 6 ; SOME ; DIG 7 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } } } } } { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; EXEC ; DROP ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; CDR ; GET ; IF_NONE { PUSH int 1038 ; FAILWITH } {} ; DUP ; DIG 4 ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 3 ; UPDATE 5 ; DUP 3 ; GET 3 ; GET 3 ; UPDATE 10 ; DUP 3 ; SWAP ; DUP ; DUG 2 ; GET 3 ; DIG 4 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 1043 ; FAILWITH } {} ; UPDATE 9 ; DUG 2 ; DUP ; GET 3 ; PUSH nat 2 ; SWAP ; EDIV ; IF_NONE { PUSH int 1047 ; FAILWITH } { CAR } ; UPDATE 3 ; NOW ; SOME ; UPDATE 9 ; DIG 2 ; DUP ; GET 9 ; DUP 3 ; GET 3 ; ADD ; UPDATE 9 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DIG 6 ; SOME ; DIG 7 ; CDR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP 5 ; UNIT ; EXEC ; DROP ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; GET 4 ; GET ; IF_NONE { PUSH int 1139 ; FAILWITH } {} ; DUP 9 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DUG 9 ; DUG 9 ; DUG 9 ; DUG 9 ; DIG 7 ; DIG 9 ; DIG 9 ; DIG 9 ; UPDATE 5 ; DIG 2 ; DUP ; CAR ; GET 3 ; CAR ; CDR ; SWAP ; DUP ; DUG 4 ; CAR ; GET 3 ; CAR ; CAR ; DUP 3 ; GET 5 ; MUL ; EDIV ; IF_NONE { PUSH int 1144 ; FAILWITH } { CAR } ; DUP ; DUP 3 ; GET 5 ; SUB ; ISNAT ; IF_NONE { PUSH int 1150 ; FAILWITH } {} ; DUP 3 ; CAR ; ADD ; DUP 5 ; DIG 3 ; GET 3 ; DIG 5 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 1154 ; FAILWITH } {} ; UPDATE 9 ; DUP ; DUG 4 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; DUP 6 ; DUP 6 ; ADD ; DIG 8 ; GET 3 ; CAR ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH int 1157 ; FAILWITH } {} ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 3 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { NIL operation ; DUP 5 ; GET 5 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 6 ; DUP 9 ; GET 5 ; CDR ; DUP 9 ; CAR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { SWAP ; DROP ; NIL operation } ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DUP 4 ; GET 5 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP 8 ; GET 5 ; CDR ; DUP 8 ; GET 3 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; NONE (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))) ; DUP 9 ; GET 4 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; NONE address ; DUP 8 ; GET 4 ; UPDATE ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; GET 7 ; NONE (pair nat (map string bytes)) ; DIG 4 ; GET 4 ; UPDATE ; UPDATE 7 ; SWAP } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; EXEC ; DROP ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; CDR ; GET ; IF_NONE { PUSH int 995 ; FAILWITH } {} ; DUP ; DIG 4 ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 3 ; UPDATE 5 ; DUP 3 ; GET 3 ; GET 3 ; UPDATE 10 ; DUP 3 ; SWAP ; DUP ; DUG 2 ; GET 3 ; DIG 4 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 1000 ; FAILWITH } {} ; UPDATE 9 ; DUG 2 ; DUP ; DUP 4 ; CAR ; GET 5 ; DIG 2 ; DUP ; GET 7 ; SWAP ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 1005 ; FAILWITH } { CAR } ; UPDATE 3 ; NONE timestamp ; UPDATE 9 ; DIG 2 ; DUP ; GET 9 ; DUP 3 ; GET 3 ; ADD ; UPDATE 9 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DIG 6 ; SOME ; DIG 7 ; CDR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } } } { IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; UNIT ; EXEC ; DROP ; SWAP ; UNIT ; SWAP ; DUG 2 ; PAIR ; EXEC ; CDR ; NIL operation } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP 5 ; UNIT ; EXEC ; DUP 3 ; GET 3 ; GET 6 ; DUP 3 ; CDR ; GET ; IF_NONE { PUSH int 1085 ; FAILWITH } {} ; DUP 10 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 5 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DUG 10 ; DUG 10 ; DUG 10 ; DUG 10 ; DUG 10 ; DIG 7 ; DIG 10 ; DIG 10 ; DIG 10 ; DIG 10 ; DUP ; DUG 2 ; UPDATE 5 ; DUP ; GET 5 ; SWAP ; DUP ; DUG 3 ; CAR ; ADD ; DUP 6 ; DUP 4 ; GET 3 ; DIG 7 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 1089 ; FAILWITH } {} ; UPDATE 9 ; DUP ; DUG 6 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; DUP 5 ; DIG 10 ; GET 3 ; CAR ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH int 1092 ; FAILWITH } {} ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 5 ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; NIL operation ; DUP 4 ; GET 5 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP 8 ; GET 5 ; CDR ; DUP 8 ; CAR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DROP 4 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; NIL operation } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; NONE (pair nat (pair nat (pair nat (pair nat (pair (option timestamp) nat))))) ; DUP 9 ; CDR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; NONE address ; DUP 8 ; CDR ; UPDATE ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; GET 7 ; NONE (pair nat (map string bytes)) ; DIG 4 ; CDR ; UPDATE ; UPDATE 7 ; SWAP } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "InvalidStakeId" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 498 ; FAILWITH } {} ; DUP ; GET 9 ; IF_NONE { PUSH string "InvalidState" ; FAILWITH } { DROP } ; DUP 3 ; CAR ; GET 7 ; SWAP ; DUP ; DUG 2 ; GET 7 ; ADD ; INT ; SWAP ; GET 9 ; IF_NONE { PUSH int 502 ; FAILWITH } {} ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "NotAllowed" ; FAILWITH } ; NIL operation ; SELF %update_parameters ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS ; SELF %internal_kickout ; PUSH mutez 0 ; DUP 4 ; DUP 6 ; CAR ; GET 3 ; CDR ; DIG 5 ; GET ; IF_NONE { PUSH int 510 ; FAILWITH } {} ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; PUSH (option nat) (Some 0) ; DIG 6 ; UPDATE ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation } } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "InvalidStakeId" ; FAILWITH } ; SENDER ; DUP 3 ; CAR ; GET 3 ; CDR ; DUP 3 ; GET ; IF_NONE { PUSH int 369 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "NotOwner" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 371 ; FAILWITH } {} ; GET 9 ; IF_NONE { PUSH string "InvalidState" ; FAILWITH } { DROP } ; NIL operation ; SELF %update_parameters ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS ; SELF %internal_recommit ; PUSH mutez 0 ; DIG 3 ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS } { IF_LEFT { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; NONE nat ; DIG 6 ; UPDATE ; PAIR ; PAIR ; PAIR ; PAIR } { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; NONE unit ; DIG 6 ; UPDATE ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR } ; NIL operation } } { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; DUG 2 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; MEM ; IF { PUSH string "TokenStillInUse" ; FAILWITH } {} ; SWAP ; DUP ; GET 7 ; NONE (pair nat (map string bytes)) ; DIG 3 ; UPDATE ; UPDATE 7 } { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; CAR ; CAR ; CAR ; CAR ; PUSH nat 0 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 46 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 405 ; FAILWITH } ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; PUSH (option nat) (Some 1) ; SENDER ; UPDATE ; PAIR ; PAIR ; PAIR ; PAIR } } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 504 ; FAILWITH } ; DUP ; IF_CONS { SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUP ; CAR ; CAR ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH int 503 ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; CDR ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; DUG 2 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { PUSH string "InexistentToken" ; FAILWITH } ; SWAP ; DUP ; GET 7 ; DIG 2 ; DUP ; SOME ; SWAP ; CAR ; UPDATE ; UPDATE 7 } } ; NIL operation } } { IF_LEFT { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; ITER { DUP ; CDR ; ITER { DUP 4 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 5 ; CAR ; GET 3 ; CDR ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH int 599 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { DUP 4 ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; GET 3 ; SENDER ; DUP 5 ; CAR ; PAIR 3 ; MEM } ; IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ; DUP ; GET 4 ; PUSH nat 1 ; COMPARE ; EQ ; IF { DIG 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; DUP 6 ; CAR ; SOME ; DIG 6 ; GET 3 ; UPDATE ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 2 } { DROP } } ; DROP } ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } { IF_LEFT { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; CDR ; DIG 4 ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR } { DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 5 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } } ; NIL operation } { IF_LEFT { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; ITER { IF_LEFT { DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; DUP 3 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; GET 4 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; PUSH (option unit) (Some Unit) ; DIG 6 ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; UPDATE ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } { DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; DUP 3 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; GET 4 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; NONE unit ; DIG 6 ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; UPDATE ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } } ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; NIL operation } { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; NIL operation ; DIG 2 ; UNIT ; SWAP ; DUG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SELF %internal_update_parameters ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP 4 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DUG 8 ; DUG 8 ; DUG 8 ; DIG 7 ; DIG 8 ; DIG 8 ; PUSH nat 0 ; DUP 3 ; CAR ; DUP 5 ; CAR ; GET 5 ; EDIV ; IF_NONE { PUSH int 849 ; FAILWITH } { CDR } ; COMPARE ; EQ ; IF {} { PUSH string "IncorrectEpochLength" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CAR ; GET 5 ; EDIV ; IF_NONE { PUSH int 850 ; FAILWITH } { CAR } ; DUP ; PUSH nat 1 ; ADD ; DUP 4 ; CDR ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "IncompleteVotingMap" ; FAILWITH } ; DUP ; PUSH nat 1 ; ADD ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; CDR ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "InvalidVotingMap" ; FAILWITH } ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 4 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CAR ; DUP 5 ; CAR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; CDR ; UPDATE 10 ; NIL operation } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "InvalidStakeId" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 451 ; FAILWITH } {} ; SENDER ; DUP 4 ; CAR ; GET 3 ; CDR ; DUP 4 ; GET ; IF_NONE { PUSH int 452 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH string "NotOwner" ; FAILWITH } ; DUP ; GET 9 ; IF_NONE { PUSH string "InvalidState" ; FAILWITH } { DROP } ; DUP ; GET 7 ; INT ; SWAP ; GET 9 ; IF_NONE { PUSH int 456 ; FAILWITH } {} ; ADD ; NOW ; COMPARE ; GE ; IF {} { PUSH string "NotAllowed" ; FAILWITH } ; NIL operation ; SELF %update_parameters ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS ; SELF %internal_withdraw ; PUSH mutez 0 ; DIG 3 ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS } } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_accumulated_rewards" nat nat { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; GET ; IF_NONE { PUSH int 1226 ; FAILWITH } {} ; PUSH nat 1000000000000 ; SWAP ; DUP ; GET 3 ; SWAP ; DUP ; DUG 3 ; GET 10 ; DIG 4 ; GET 3 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 1229 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 1229 ; FAILWITH } { CAR } ; SWAP ; GET 5 ; ADD } { DROP 2 ; PUSH nat 0 } } ; view "get_admin_status" address int { UNPAIR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; CAR ; CAR ; CAR ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 1266 ; FAILWITH } {} ; INT } { DROP 2 ; PUSH int -1 } } ; view "get_stake_owner" nat (option address) { UNPAIR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; CAR ; GET 3 ; CDR ; SWAP ; GET ; IF_NONE { PUSH int 1306 ; FAILWITH } {} ; SOME } { DROP 2 ; NONE address } } ; view "get_total_reward_stake_weight" unit nat { CDR ; GET 9 } ; view "get_voting_details" nat (option (pair (nat %token_amount) (pair (nat %vote_weight) (address %owner)))) { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1347 ; FAILWITH } {} ; DUP ; DUP ; GET 5 ; PUSH nat 1000000000000 ; DIG 3 ; DUP ; GET 3 ; SWAP ; GET 10 ; DUP 7 ; GET 3 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 1349 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 1349 ; FAILWITH } { CAR } ; ADD ; UPDATE 5 ; DIG 2 ; DUP ; GET 10 ; SWAP ; DUP ; DUG 4 ; CAR ; CAR ; GET 4 ; DUP 3 ; GET 7 ; EDIV ; IF_NONE { PUSH int 1353 ; FAILWITH } { CAR } ; GET ; IF_NONE { PUSH int 1353 ; FAILWITH } {} ; UNPAIR ; DIG 2 ; DUP ; GET 5 ; SWAP ; DUP ; DUG 4 ; CAR ; ADD ; MUL ; EDIV ; IF_NONE { PUSH int 1356 ; FAILWITH } { CAR } ; DIG 3 ; CAR ; GET 3 ; CDR ; DIG 3 ; GET ; IF_NONE { PUSH int 1358 ; FAILWITH } {} ; SWAP ; DIG 2 ; CAR ; PAIR 3 ; SOME } { DROP 2 ; NONE (pair nat (pair nat address)) } } ; view "is_operator" (pair (address %owner) (pair (address %operator) (nat %token_id))) bool { UNPAIR ; SWAP ; GET 3 ; CAR ; CAR ; SWAP ; MEM } ; view "view_stake_info" nat (pair (nat %amount) (pair (nat %reward_weight) (pair (nat %accumulated_rewards) (pair (nat %cooldown_duration) (pair (option %cooldown_start_timestamp timestamp) (nat %reward_factor)))))) { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 6 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; GET 3 ; GET 6 ; SWAP ; GET ; IF_NONE { PUSH int 1203 ; FAILWITH } {} } { PUSH nat 0 ; NONE timestamp ; PUSH nat 0 ; DUP ; DUP ; DUP ; PAIR 6 ; SWAP ; DROP ; SWAP ; DROP } } }