x
892
1731
parameter (or (or (or (or (or (pair %approve (address %spender) (nat %value)) (unit %calculateLbPrice)) (or (unit %default) (unit %depositLending))) (or (or (unit %disableOnchainLiquidation) (pair %flashloan (contract %callback unit) (mutez %requested_xtz))) (or (unit %flashloanFinalize) (or (unit %flashloanReturn) (pair %getAdministrator unit (contract address)))))) (or (or (or (pair %getAllowance (pair (address %owner) (address %spender)) (contract nat)) (pair %getBalance address (contract nat))) (or (pair %getTotalSupply unit (contract nat)) (or (pair %investLB (mutez %amount2tzBTC) (pair (nat %mintzBTCTokensBought) (pair (mutez %amount2Lqt) (pair (nat %minLqtMinted) (nat %tzBTCShares))))) (pair %investLBFinalize (address %address) (pair (mutez %initial_balance) (nat %initial_lb_shares)))))) (or (or (address %liquidateLB) (pair %liquidateLBFinalize (address %address) (pair (address %sender) (mutez %sent_amount)))) (or (address %liquidateOnchainLB) (or (pair %liquidateOnchainLBFinalize (address %address) (mutez %initial_balance)) (pair %redeemLB (nat %lqtBurned) (nat %minTokensWithdrawn))))))) (or (or (or (or (pair %redeemLBFinalize (address %address) (pair (nat %lqtBurned) (mutez %initial_balance))) (mutez %redeemLending)) (or (nat %sellTzBTC) (address %setAdministrator))) (or (or (option %setDelegate key_hash) (address %setDexContract)) (or (pair %setFlashloanParams (nat %flashloan_admin_commission) (pair (nat %flashloan_deposit_commission) (bool %flashloan_available))) (or (bool %setIsWorkingStatus) (nat %setLbPriceChangeRate))))) (or (or (or (pair %setLeverageParams (nat %max_leverage) (pair (nat %onchain_liquidation_percent) (pair (nat %onchain_liquidation_comm) (pair (nat %liquidation_percent) (pair (nat %liquidation_price_percent) (pair (nat %liquidation_comm) (address %oracle_address))))))) (pair %setRateParams (nat %rate_1) (pair (nat %rate_diff) (pair (nat %threshold_percent_1) (nat %threshold_percent_2))))) (or (nat %setUpfrontCommission) (or (pair %transfer (address %from) (pair (address %to) (nat %value))) (unit %updateIndexes)))) (or (or (nat %updateLBCallback) (nat %updateLqtTotalCallback)) (or (nat %updateTzbtcPoolCallback) (or (pair %update_metadata (string %key) (bytes %value)) (unit %withdrawCommission)))))));storage (pair (pair (pair (pair (pair (address %administrator) (nat %deposit_index)) (pair (address %dex_contract_address) (address %fa_lb_address))) (pair (pair (address %fa_tzBTC_address) (nat %flashloan_admin_commission)) (pair (mutez %flashloan_amount) (pair (bool %flashloan_available) (nat %flashloan_deposit_commission))))) (pair (pair (pair (nat %gross_credit_index) (nat %index_delta)) (pair (timestamp %index_update_dttm) (bool %is_working))) (pair (pair (nat %lb_price) (nat %lb_price_change_rate)) (pair (nat %lb_shares) (pair (big_map %ledger address (pair (map %approvals address nat) (nat %balance))) (nat %liquidation_comm)))))) (pair (pair (pair (pair (nat %liquidation_percent) (nat %liquidation_price_percent)) (pair (address %liquidity_baking_address) (big_map %liquidity_book address (pair (nat %gross_credit) (pair (nat %lb_shares) (nat %net_credit)))))) (pair (pair (pair %local_params (pair (bool %fa_lb_callback_status) (bool %fa_tzBTC_callback_status)) (pair (nat %lqt_total) (nat %tzbtc_pool))) (nat %max_leverage)) (pair (big_map %metadata string bytes) (pair (nat %net_credit_index) (bool %onchain_liquidation_available))))) (pair (pair (pair (nat %onchain_liquidation_comm) (nat %onchain_liquidation_percent)) (pair (address %oracle_address) (pair %rate_params (pair (nat %rate_1) (nat %rate_diff)) (pair (nat %threshold_percent_1) (nat %threshold_percent_2))))) (pair (pair (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes))) (nat %totalSupply)) (pair (nat %total_gross_credit) (pair (nat %total_net_credit) (nat %upfront_commission)))))));code { LAMBDA (pair unit (pair (pair (pair (pair (pair address nat) (pair address address)) (pair (pair address nat) (pair mutez (pair bool nat)))) (pair (pair (pair nat nat) (pair timestamp bool)) (pair (pair nat nat) (pair nat (pair (big_map address (pair (map address nat) nat)) nat))))) (pair (pair (pair (pair nat nat) (pair address (big_map address (pair nat (pair nat nat))))) (pair (pair (pair (pair bool bool) (pair nat nat)) nat) (pair (big_map string bytes) (pair nat bool)))) (pair (pair (pair nat nat) (pair address (pair (pair nat nat) (pair nat nat)))) (pair (pair (big_map nat (pair nat (map string bytes))) nat) (pair nat (pair nat nat))))))) (pair unit (pair (pair (pair (pair (pair address nat) (pair address address)) (pair (pair address nat) (pair mutez (pair bool nat)))) (pair (pair (pair nat nat) (pair timestamp bool)) (pair (pair nat nat) (pair nat (pair (big_map address (pair (map address nat) nat)) nat))))) (pair (pair (pair (pair nat nat) (pair address (big_map address (pair nat (pair nat nat))))) (pair (pair (pair (pair bool bool) (pair nat nat)) nat) (pair (big_map string bytes) (pair nat bool)))) (pair (pair (pair nat nat) (pair address (pair (pair nat nat) (pair nat nat)))) (pair (pair (big_map nat (pair nat (map string bytes))) nat) (pair nat (pair nat nat))))))) { CDR ; DUP ; GET 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; GET 11 ; MUL ; SWAP ; DUP ; CAR ; CAR ; CAR ; CAR ; CDR ; SWAP ; DUP ; DUG 3 ; GET 7 ; CDR ; MUL ; COMPARE ; GE ; IF {} { PUSH string "total deposit and net credit inequation error" ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair unit (pair (list operation) (pair (pair (pair (pair (pair address nat) (pair address address)) (pair (pair address nat) (pair mutez (pair bool nat)))) (pair (pair (pair nat nat) (pair timestamp bool)) (pair (pair nat nat) (pair nat (pair (big_map address (pair (map address nat) nat)) nat))))) (pair (pair (pair (pair nat nat) (pair address (big_map address (pair nat (pair nat nat))))) (pair (pair (pair (pair bool bool) (pair nat nat)) nat) (pair (big_map string bytes) (pair nat bool)))) (pair (pair (pair nat nat) (pair address (pair (pair nat nat) (pair nat nat)))) (pair (pair (big_map nat (pair nat (map string bytes))) nat) (pair nat (pair nat nat)))))))) (pair unit (pair (list operation) (pair (pair (pair (pair (pair address nat) (pair address address)) (pair (pair address nat) (pair mutez (pair bool nat)))) (pair (pair (pair nat nat) (pair timestamp bool)) (pair (pair nat nat) (pair nat (pair (big_map address (pair (map address nat) nat)) nat))))) (pair (pair (pair (pair nat nat) (pair address (big_map address (pair nat (pair nat nat))))) (pair (pair (pair (pair bool bool) (pair nat nat)) nat) (pair (big_map string bytes) (pair nat bool)))) (pair (pair (pair nat nat) (pair address (pair (pair nat nat) (pair nat nat)))) (pair (pair (big_map nat (pair nat (map string bytes))) nat) (pair nat (pair nat nat)))))))) { UNPAIR 3 ; SWAP ; DUP 3 ; CAR ; GET 3 ; GET 3 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 568 ; FAILWITH } {} ; PUSH nat 0 ; PUSH nat 0 ; DUP 6 ; GET 7 ; CDR ; COMPARE ; GT ; IF { DROP ; DIG 3 ; DUP ; CAR ; CAR ; CAR ; CAR ; CDR ; SWAP ; DUP ; DUG 5 ; GET 7 ; CDR ; MUL ; PUSH nat 1000000000000 ; DIG 5 ; DUP ; GET 3 ; GET 7 ; SWAP ; DUP ; DUG 7 ; GET 11 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 573 ; FAILWITH } { CAR } } {} ; PUSH nat 0 ; PUSH nat 0 ; DUP 7 ; GET 7 ; CDR ; COMPARE ; GT ; IF { DROP ; DIG 4 ; DUP ; CAR ; CAR ; CAR ; CAR ; CDR ; SWAP ; DUP ; DUG 6 ; GET 7 ; CDR ; MUL ; PUSH nat 1000000000000 ; DIG 6 ; DUP ; CAR ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 8 ; GET 9 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 527 ; FAILWITH } { CAR } } {} ; PUSH nat 10000000000 ; DUP 7 ; GET 5 ; GET 7 ; MUL ; PUSH nat 10000000000 ; DUP 8 ; GET 5 ; GET 8 ; MUL ; SWAP ; DUP ; DUG 2 ; DUP 4 ; COMPARE ; LT ; IF { SWAP ; DUP ; DUG 2 ; DUP 4 ; DUP 10 ; GET 5 ; GET 5 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 540 ; FAILWITH } { CAR } ; DUG 2 } { DUP ; DUP 4 ; COMPARE ; LT ; IF { DUP 8 ; GET 5 ; GET 5 ; CAR ; DUG 2 } { PUSH nat 1000000000000 ; DUP 4 ; COMPARE ; LT ; IF { DUP ; PUSH nat 1000000000000 ; SUB ; ISNAT ; IF_NONE { PUSH int 554 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; DUP 5 ; SUB ; ISNAT ; IF_NONE { PUSH int 552 ; FAILWITH } {} ; DUP 10 ; GET 5 ; GET 5 ; CDR ; MUL ; EDIV ; IF_NONE { PUSH int 552 ; FAILWITH } { CAR } ; DUP 9 ; GET 5 ; GET 5 ; CAR ; ADD ; DUG 2 } { DIG 7 ; DUP ; GET 5 ; GET 5 ; CDR ; SWAP ; DUP ; DUG 9 ; GET 5 ; GET 5 ; CAR ; ADD ; DUG 2 } } } ; DUP 9 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CDR ; PUSH nat 1000000000000 ; DUP 12 ; DUP 10 ; MUL ; PUSH nat 1000000000000 ; ADD ; DIG 15 ; CAR ; GET 3 ; CAR ; CAR ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 8 ; PUSH nat 0 ; DUP 10 ; CAR ; GET 3 ; GET 4 ; IF { DROP 3 ; SWAP ; DROP ; DIG 4 ; DROP ; PUSH nat 10 ; PUSH nat 9 ; DIG 2 ; MUL ; EDIV ; IF_NONE { PUSH int 583 ; FAILWITH } { CAR } } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 4 ; DROP } ; DUP 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; PUSH nat 1000000000000 ; DUP 10 ; DUP 9 ; MUL ; PUSH nat 1000000000000 ; ADD ; DIG 12 ; GET 3 ; GET 7 ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 4 ; PUSH nat 1000000000000 ; DUG 2 ; MUL ; EDIV ; IF_NONE { PUSH int 586 ; FAILWITH } { CAR } ; DUP 4 ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; PUSH nat 1000000000000 ; DIG 7 ; DIG 7 ; MUL ; PUSH nat 1000000000000 ; ADD ; DIG 8 ; CAR ; CAR ; CAR ; CAR ; CDR ; MUL ; EDIV ; IF_NONE { PUSH int 587 ; FAILWITH } { CAR } ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; UNIT ; PAIR 3 } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SENDER ; MEM ; IF {} { SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; PUSH (option (pair (map address nat) nat)) (Some (Pair {} 0)) ; SENDER ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } ; PUSH nat 0 ; DUP 3 ; CAR ; GET 9 ; SENDER ; GET ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; CAR ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH nat 0 } {} ; COMPARE ; EQ ; IF { PUSH bool True } { DUP ; CDR ; PUSH nat 0 ; COMPARE ; EQ } ; IF {} { PUSH string "UnsafeAllowanceChange" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP ; SENDER ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 97 ; FAILWITH } {} ; DUP ; CAR ; DUP 11 ; CDR ; SOME ; DIG 11 ; CAR ; UPDATE ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } { DROP ; SENDER ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DUP ; GET 3 ; GET 3 ; CAR ; GET 3 ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP ; GET 3 ; GET 3 ; CAR ; GET 3 ; PUSH nat 1000000000000 ; DUP 3 ; GET 3 ; GET 3 ; CAR ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 606 ; FAILWITH } { CAR } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; CAR ; SWAP ; DUP ; DUG 2 ; COMPARE ; GT ; IF { SWAP ; DUP ; DUG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; CDR ; PUSH nat 1000000000000 ; DUP 8 ; CAR ; GET 3 ; GET 3 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 610 ; FAILWITH } {} ; DUP 9 ; CAR ; GET 5 ; CDR ; MUL ; PUSH nat 1000000000000 ; ADD ; DIG 8 ; CAR ; GET 5 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 610 ; FAILWITH } { CAR } ; DIG 6 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; CDR ; PUSH nat 1000000000000 ; DUP 8 ; CAR ; GET 3 ; GET 3 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 616 ; FAILWITH } {} ; DUP 9 ; CAR ; GET 5 ; CDR ; MUL ; PUSH nat 1000000000000 ; SUB ; PUSH int 1 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { SWAP ; DROP } { DROP } ; ISNAT ; IF_NONE { PUSH int 615 ; FAILWITH } {} ; DIG 8 ; CAR ; GET 5 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 615 ; FAILWITH } { CAR } ; DIG 6 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { SWAP ; DROP } { DROP } ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } } {} ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; NOW ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR } ; NIL operation } { IF_LEFT { DROP ; DUP ; GET 3 ; CAR ; GET 3 ; SENDER ; COMPARE ; NEQ ; IF { DUP ; CAR ; CAR ; CAR ; GET 3 ; SENDER ; COMPARE ; NEQ } { PUSH bool False } ; IF { DUP ; GET 7 ; CDR ; PUSH nat 0 ; COMPARE ; LT } { PUSH bool False } ; IF { DUP ; CAR ; GET 3 ; GET 3 ; NOW ; COMPARE ; NEQ ; IF { NIL operation ; DIG 2 ; UNIT ; SWAP ; DUG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 5 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { SWAP ; DROP ; NIL operation } ; SWAP ; DUP ; DUG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; DIG 7 ; GET 7 ; CDR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 128 ; FAILWITH } { CAR } ; ADD ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP } { SWAP ; DROP ; NIL operation } } { DROP ; DUP ; CAR ; GET 3 ; GET 3 ; NOW ; COMPARE ; NEQ ; IF { NIL operation ; DIG 2 ; UNIT ; SWAP ; DUG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 5 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { SWAP ; DROP ; NIL operation } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SENDER ; MEM ; IF {} { SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; PUSH (option (pair (map address nat) nat)) (Some (Pair {} 0)) ; SENDER ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; CDR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; AMOUNT ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 639 ; FAILWITH } { CAR } ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP ; SENDER ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 640 ; FAILWITH } {} ; DUP ; CDR ; DUP 11 ; ADD ; UPDATE 2 ; SOME ; SWAP ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; DIG 6 ; ADD ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP } } } { IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; SWAP ; DROP ; DUP ; CAR ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CAR ; PUSH bool False ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 7 ; IF {} { PUSH string "flashloan is not available" ; FAILWITH } ; DUP ; CDR ; PUSH mutez 0 ; COMPARE ; LT ; IF {} { PUSH string "zero requested amount" ; FAILWITH } ; NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { DIG 3 ; DROP ; NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; NIL operation } ; DUP 3 ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; PUSH mutez 1 ; PUSH nat 100000 ; DIG 10 ; DUP ; CAR ; CAR ; GET 8 ; SWAP ; CAR ; CAR ; GET 3 ; CDR ; PUSH nat 100000 ; ADD ; ADD ; PUSH mutez 1 ; DUP 12 ; CDR ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; MUL ; ADD ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; DUG 2 ; PUSH nat 0 ; DUP 4 ; GET 7 ; CDR ; COMPARE ; GT ; IF { DUP 3 ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; PUSH nat 100000 ; DUP 10 ; GET 7 ; CDR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; DUP 13 ; CDR ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; DIG 12 ; CAR ; CAR ; GET 8 ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 1162 ; FAILWITH } { CAR } ; EDIV ; IF_NONE { PUSH int 1162 ; FAILWITH } { CAR } ; ADD ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; DUG 2 } {} ; SWAP ; UNPAIR ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS ; SELF %flashloanFinalize ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } } { DIG 3 ; DROP ; IF_LEFT { DROP ; SWAP ; DROP ; DUP ; CAR ; CAR ; GET 5 ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { PUSH string "loan error" ; FAILWITH } ; NIL operation } { IF_LEFT { AMOUNT ; DUP 3 ; CAR ; CAR ; GET 5 ; SUB_MUTEZ ; DUP ; IF_NONE { DROP 2 ; SWAP ; DROP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; PUSH mutez 0 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } { DROP ; SWAP ; DROP ; DIG 2 ; DROP ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 5 ; IF_NONE { PUSH int 1172 ; FAILWITH } {} ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } ; NIL operation } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; CAR ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } } } } { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; MEM ; IF { SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET ; IF_NONE { PUSH int 113 ; FAILWITH } {} ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; GET ; IF_NONE { PUSH nat 0 } {} } { PUSH nat 0 } ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; CDR } { PUSH nat 0 } ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; GET 7 ; CDR ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { IF_LEFT { NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { NIL operation ; DUP 4 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 4 ; DIG 4 ; DIG 3 ; DIG 4 ; DIG 4 ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; DUP 3 ; GET 12 ; PUSH nat 100000 ; SUB ; ISNAT ; IF_NONE { PUSH int 804 ; FAILWITH } {} ; DUP 4 ; GET 12 ; AMOUNT ; DIG 4 ; DUP ; CAR ; SWAP ; DUP ; DUG 6 ; GET 5 ; ADD ; SUB_MUTEZ ; IF_NONE { PUSH int 802 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 801 ; FAILWITH } {} ; CAR ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { SWAP ; DUP 4 ; CAR ; CAR ; CAR ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 808 ; FAILWITH } {} ; DUP 3 ; UNIT ; TRANSFER_TOKENS ; CONS ; SWAP } {} ; DUP 4 ; GET 3 ; GET 3 ; CDR ; SWAP ; DUP ; DUG 2 ; AMOUNT ; SUB_MUTEZ ; IF_NONE { PUSH int 813 ; FAILWITH } {} ; MUL ; PUSH nat 10 ; DIG 4 ; DUP ; CAR ; SWAP ; DUP ; DUG 6 ; GET 5 ; ADD ; MUL ; COMPARE ; LE ; IF {} { PUSH string "leverage error" ; FAILWITH } ; PUSH nat 0 ; DUP 4 ; GET 8 ; COMPARE ; GT ; IF { SWAP ; DUP 4 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH string "cant call transfer for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 8 ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS ; SWAP } {} ; PUSH mutez 0 ; DUP 4 ; CAR ; COMPARE ; GT ; IF { SWAP ; DUP 4 ; CAR ; CAR ; CAR ; GET 3 ; CONTRACT %xtzToToken (pair (address %to) (pair (nat %minTokensBought) (timestamp %deadline))) ; IF_NONE { PUSH string "cant call xtzToToken" ; FAILWITH } {} ; DUP 4 ; CAR ; PUSH int 1 ; NOW ; ADD ; DUP 6 ; GET 3 ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS ; SWAP } {} ; SWAP ; DUP 4 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 1000000000000000000 ; DUP 7 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP ; DUG 2 ; DUP 5 ; GET 3 ; CAR ; GET 3 ; CONTRACT %addLiquidity (pair (address %owner) (pair (nat %minLqtMinted) (pair (nat %maxTokensDeposited) (timestamp %deadline)))) ; IF_NONE { PUSH string "cant call addLiquidity" ; FAILWITH } {} ; DUP 5 ; GET 5 ; PUSH int 1 ; NOW ; ADD ; PUSH nat 1000000000000000000 ; DUP 8 ; GET 7 ; SELF_ADDRESS ; PAIR 4 ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; TRANSFER_TOKENS ; CONS ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 0 ; DUP 5 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CDR ; PUSH bool True ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for LB shares" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLBCallback ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; PUSH bool True ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 2 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %sellTzBTC ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %investLBFinalize ; PUSH mutez 0 ; DUP 4 ; CAR ; GET 7 ; AMOUNT ; BALANCE ; SUB_MUTEZ ; IF_NONE { PUSH int 857 ; FAILWITH } {} ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; SENDER ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; PUSH nat 0 ; DUP ; DUP ; PAIR 3 ; SOME ; DUP 8 ; CAR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; BALANCE ; DUP 5 ; GET 3 ; SUB_MUTEZ ; IF_NONE { PUSH string "negative balance delta error" ; FAILWITH } {} ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; DUP 3 ; GET 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; DIG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 10 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 894 ; FAILWITH } {} ; DUP ; GET 4 ; DUP 10 ; ADD ; UPDATE 4 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 11 ; DIG 2 ; ADD ; UPDATE 11 ; DUP ; DUG 3 ; CAR ; GET 3 ; CAR ; CAR ; SWAP ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 9 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 898 ; FAILWITH } {} ; DUP ; CAR ; DUP 10 ; ADD ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 9 ; DIG 2 ; ADD ; UPDATE 9 ; SWAP ; DUP ; GET 4 ; DUP 3 ; CAR ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH string "negative lb delta error" ; FAILWITH } {} ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DIG 8 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 902 ; FAILWITH } {} ; DUP ; GET 3 ; DIG 9 ; ADD ; UPDATE 3 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; UNIT ; SWAP ; DUG 2 ; PAIR ; EXEC ; CDR ; NIL operation } } } } { IF_LEFT { IF_LEFT { NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { DIG 3 ; DROP ; NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; NIL operation } ; DUP 3 ; GET 3 ; CAR ; GET 4 ; DUP 3 ; MEM ; IF {} { PUSH string "Unknown Address." ; FAILWITH } ; PUSH nat 0 ; DUP 4 ; GET 3 ; CAR ; GET 4 ; DUP 4 ; GET ; IF_NONE { PUSH int 974 ; FAILWITH } {} ; GET 4 ; COMPARE ; GT ; IF {} { PUSH string "not loaned" ; FAILWITH } ; SELF %liquidateLBFinalize ; PUSH mutez 0 ; AMOUNT ; SENDER ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 1008 ; FAILWITH } {} ; GET 3 ; PUSH mutez 1 ; PUSH nat 1000000 ; PUSH nat 1000000000000 ; DIG 5 ; DUP ; CAR ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 7 ; GET 3 ; CAR ; GET 4 ; DUP 7 ; CAR ; GET ; IF_NONE { PUSH int 1013 ; FAILWITH } {} ; CAR ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; MUL ; DUP 4 ; GET 3 ; CAR ; CAR ; CAR ; PUSH nat 100 ; PUSH mutez 1 ; DIG 3 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; DUP 6 ; GET 5 ; GET 3 ; PUSH string "XTZ" ; VIEW "get_price" nat ; IF_NONE { PUSH string "invalid view" ; FAILWITH } {} ; MUL ; MUL ; MUL ; PUSH nat 100 ; PUSH nat 1000000000000 ; DUP 6 ; GET 5 ; GET 3 ; PUSH string "BTC" ; VIEW "get_price" nat ; IF_NONE { PUSH string "invalid view" ; FAILWITH } {} ; DUP 7 ; CAR ; GET 5 ; CAR ; PUSH nat 2 ; DUP 7 ; MUL ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 1011 ; FAILWITH } { CAR } ; MUL ; COMPARE ; LT ; IF {} { PUSH string "liquidation is not allowed" ; FAILWITH } ; DUP 3 ; GET 3 ; CAR ; GET 4 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 1022 ; FAILWITH } {} ; CAR ; DUP 4 ; CAR ; GET 3 ; CAR ; CAR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; DUP 8 ; GET 3 ; CAR ; CAR ; CDR ; PUSH nat 100 ; DUP 9 ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 1019 ; FAILWITH } {} ; CAR ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 1021 ; FAILWITH } { CAR } ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DUP 4 ; GET 3 ; CAR ; GET 4 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 1024 ; FAILWITH } {} ; CAR ; SWAP ; DUP ; DUG 2 ; DUP 6 ; GET 3 ; CAR ; GET 4 ; DUP 6 ; CAR ; GET ; IF_NONE { PUSH int 1024 ; FAILWITH } {} ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 1024 ; FAILWITH } { CAR } ; DUP 5 ; GET 3 ; CAR ; GET 4 ; DUP 5 ; CAR ; GET ; IF_NONE { PUSH int 1025 ; FAILWITH } {} ; CAR ; DUP 3 ; DUP 5 ; MUL ; EDIV ; IF_NONE { PUSH int 1025 ; FAILWITH } { CAR } ; DUP 6 ; DUP 3 ; DIG 7 ; GET 11 ; SUB ; ISNAT ; IF_NONE { PUSH int 1027 ; FAILWITH } {} ; UPDATE 11 ; DUP ; DUG 6 ; DUP 4 ; DIG 7 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 1028 ; FAILWITH } {} ; UPDATE 9 ; DUP ; DUG 6 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 12 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1029 ; FAILWITH } {} ; DIG 10 ; DIG 13 ; GET 3 ; CAR ; GET 4 ; DUP 14 ; CAR ; GET ; IF_NONE { PUSH int 1030 ; FAILWITH } {} ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong liquidated gross credit" ; FAILWITH } {} ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 11 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1033 ; FAILWITH } {} ; DIG 9 ; DIG 12 ; GET 3 ; CAR ; GET 4 ; DUP 13 ; CAR ; GET ; IF_NONE { PUSH int 1034 ; FAILWITH } {} ; GET 4 ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong liquidated net credit" ; FAILWITH } {} ; UPDATE 4 ; SOME ; SWAP ; UPDATE ; DUP ; DUP 10 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1037 ; FAILWITH } {} ; DUP 9 ; DIG 10 ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong liquidated shares" ; FAILWITH } {} ; UPDATE 3 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 3 ; GET 3 ; CAR ; CAR ; CDR ; PUSH nat 100 ; DUP 4 ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 1019 ; FAILWITH } {} ; CAR ; DUP 3 ; GET 4 ; SUB_MUTEZ ; IF_NONE { PUSH string "negative balance delta error" ; FAILWITH } {} ; PUSH nat 100 ; DUP 5 ; CAR ; GET 10 ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH int 1044 ; FAILWITH } {} ; CAR ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { NIL operation ; DUP 6 ; CAR ; CAR ; CAR ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 1046 ; FAILWITH } {} ; DUP 3 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; DUP 6 ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; DIG 11 ; GET 7 ; CDR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; DIG 11 ; DIG 12 ; SUB_MUTEZ ; IF_NONE { PUSH string "admin commission error" ; FAILWITH } {} ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; EDIV ; IF_NONE { PUSH int 1047 ; FAILWITH } { CAR } ; ADD ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; DUP ; DUG 4 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH string "cant call transfer for LB shares" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 4 ; DIG 5 ; GET 3 ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS ; DUP 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 6 ; DIG 7 ; CAR ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 1051 ; FAILWITH } {} ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } } { IF_LEFT { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 8 ; IF {} { PUSH string "Onchain liquidation disabled." ; FAILWITH } ; NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { NIL operation ; DUP 4 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 4 ; DIG 4 ; DIG 3 ; DIG 4 ; DIG 4 ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; DUP 3 ; GET 3 ; CAR ; GET 4 ; DUP 3 ; MEM ; IF {} { PUSH string "Unknown Address." ; FAILWITH } ; PUSH nat 0 ; DUP 4 ; GET 3 ; CAR ; GET 4 ; DUP 4 ; GET ; IF_NONE { PUSH int 1063 ; FAILWITH } {} ; GET 4 ; COMPARE ; GT ; IF {} { PUSH string "not loaned" ; FAILWITH } ; DUP 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DUP 8 ; GET 3 ; CAR ; GET 4 ; DUP 8 ; GET ; IF_NONE { PUSH int 1066 ; FAILWITH } {} ; GET 3 ; DIG 8 ; CAR ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 709 ; FAILWITH } {} ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for LB shares" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 3 ; CAR ; GET 4 ; DUP 5 ; GET ; IF_NONE { PUSH int 1066 ; FAILWITH } {} ; GET 3 ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP ; DUP 4 ; GET 3 ; CAR ; GET 3 ; CONTRACT %removeLiquidity (pair (address %to) (pair (nat %lqtBurned) (pair (mutez %minXtzWithdrawn) (pair (nat %minTokensWithdrawn) (timestamp %deadline))))) ; IF_NONE { PUSH string "cant call removeLiquidity" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH int 1 ; NOW ; ADD ; PUSH nat 0 ; PUSH mutez 0 ; DUP 9 ; GET 3 ; CAR ; GET 4 ; DUP 9 ; GET ; IF_NONE { PUSH int 1066 ; FAILWITH } {} ; GET 3 ; SELF_ADDRESS ; PAIR 5 ; DIG 4 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for LB shares" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 0 ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; PUSH bool True ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %sellTzBTC ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %liquidateOnchainLBFinalize ; PUSH mutez 0 ; BALANCE ; DIG 4 ; PAIR ; TRANSFER_TOKENS ; CONS } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DUP ; CDR ; BALANCE ; SUB_MUTEZ ; IF_NONE { PUSH string "negative balance delta error" ; FAILWITH } {} ; PUSH mutez 1 ; PUSH nat 1000000 ; PUSH nat 1000000000000 ; DIG 5 ; DUP ; CAR ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 7 ; GET 3 ; CAR ; GET 4 ; DUP 7 ; CAR ; GET ; IF_NONE { PUSH int 733 ; FAILWITH } {} ; CAR ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; MUL ; DIG 3 ; DUP ; DUP ; DUG 5 ; GET 3 ; CAR ; GET 4 ; DUP 5 ; CAR ; GET ; IF_NONE { PUSH int 735 ; FAILWITH } {} ; GET 4 ; DIG 5 ; GET 11 ; SUB ; ISNAT ; IF_NONE { PUSH int 735 ; FAILWITH } {} ; UPDATE 11 ; DUP ; DUP ; DUG 5 ; GET 3 ; CAR ; GET 4 ; DUP 5 ; CAR ; GET ; IF_NONE { PUSH int 736 ; FAILWITH } {} ; CAR ; DIG 5 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 736 ; FAILWITH } {} ; UPDATE 9 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 10 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 738 ; FAILWITH } {} ; PUSH nat 0 ; UPDATE 3 ; SOME ; SWAP ; UPDATE ; DUP ; DUP 10 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 739 ; FAILWITH } {} ; PUSH nat 0 ; UPDATE 4 ; SOME ; SWAP ; UPDATE ; DUP ; DIG 9 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 740 ; FAILWITH } {} ; PUSH nat 0 ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 3 ; GET 5 ; CAR ; CDR ; SWAP ; DUP ; DUG 2 ; MUL ; PUSH nat 100 ; DUP 4 ; MUL ; COMPARE ; LT ; IF {} { PUSH string "liquidation is not allowed" ; FAILWITH } ; PUSH nat 1000000 ; PUSH mutez 1 ; DIG 2 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; PUSH nat 1000000 ; PUSH mutez 1 ; DIG 3 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; SUB ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { PUSH mutez 1 ; PUSH nat 1000000 ; PUSH nat 100 ; DUP 5 ; GET 5 ; CAR ; CAR ; DUP 5 ; ISNAT ; IF_NONE { PUSH int 1106 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 1106 ; FAILWITH } { CAR } ; EDIV ; IF_NONE { PUSH int 35 ; FAILWITH } { CAR } ; MUL ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { NIL operation ; DUP 4 ; CAR ; CAR ; CAR ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 1108 ; FAILWITH } {} ; DUP 3 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; DUP 4 ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; DIG 9 ; GET 7 ; CDR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; DIG 11 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; DIG 10 ; ISNAT ; IF_NONE { PUSH int 1109 ; FAILWITH } {} ; SUB ; ISNAT ; IF_NONE { PUSH int 1109 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 1109 ; FAILWITH } { CAR } ; ADD ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP } { SWAP ; DUP ; DUG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; DUP 7 ; GET 7 ; CDR ; PUSH nat 1000000000000 ; DIG 7 ; NEG ; ISNAT ; IF_NONE { PUSH int 1114 ; FAILWITH } {} ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; DIG 6 ; CAR ; CAR ; CAR ; CAR ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH int 1114 ; FAILWITH } {} ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation } } { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "Amount is not allowed." ; FAILWITH } ; NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { NIL operation ; DUP 4 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 4 ; DIG 4 ; DIG 3 ; DIG 4 ; DIG 4 ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; DUP 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DUP 7 ; CAR ; DIG 8 ; CAR ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 709 ; FAILWITH } {} ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for LB shares" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 4 ; CAR ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP ; DUP 4 ; GET 3 ; CAR ; GET 3 ; CONTRACT %removeLiquidity (pair (address %to) (pair (nat %lqtBurned) (pair (mutez %minXtzWithdrawn) (pair (nat %minTokensWithdrawn) (timestamp %deadline))))) ; IF_NONE { PUSH string "cant call removeLiquidity" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH int 1 ; NOW ; ADD ; DUP 6 ; CDR ; PUSH mutez 0 ; DUP 8 ; CAR ; SELF_ADDRESS ; PAIR 5 ; DIG 4 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for LB shares" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 0 ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; PUSH bool True ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %sellTzBTC ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %redeemLBFinalize ; PUSH mutez 0 ; BALANCE ; DIG 4 ; CAR ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } } } } } { IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DUP ; GET 4 ; BALANCE ; SUB_MUTEZ ; IF_NONE { PUSH string "negative balance delta error" ; FAILWITH } {} ; DUP 3 ; GET 3 ; CAR ; GET 4 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 748 ; FAILWITH } {} ; GET 3 ; PUSH mutez 1 ; PUSH nat 1000000 ; DUP 3 ; PUSH nat 1000000000000 ; MUL ; DUP 6 ; GET 3 ; DIG 7 ; DUP ; CAR ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 9 ; GET 3 ; CAR ; GET 4 ; DUP 9 ; CAR ; GET ; IF_NONE { PUSH int 751 ; FAILWITH } {} ; CAR ; MUL ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; MUL ; SWAP ; DUP ; DUG 2 ; DUP 5 ; GET 3 ; DUP 7 ; GET 3 ; CAR ; GET 4 ; DUP 7 ; CAR ; GET ; IF_NONE { PUSH int 754 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 754 ; FAILWITH } { CAR } ; DUP 6 ; SWAP ; DUP ; DUG 2 ; DIG 7 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 755 ; FAILWITH } {} ; UPDATE 9 ; DUP ; DUG 6 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 12 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 756 ; FAILWITH } {} ; DIG 8 ; DIG 13 ; GET 3 ; CAR ; GET 4 ; DUP 14 ; CAR ; GET ; IF_NONE { PUSH int 757 ; FAILWITH } {} ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong liquidated gross credit" ; FAILWITH } {} ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 4 ; SWAP ; DUP ; DUG 2 ; DUP 5 ; GET 3 ; DUP 7 ; GET 3 ; CAR ; GET 4 ; DUP 7 ; CAR ; GET ; IF_NONE { PUSH int 761 ; FAILWITH } {} ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 761 ; FAILWITH } { CAR } ; DUP 6 ; SWAP ; DUP ; DUG 2 ; DIG 7 ; GET 11 ; SUB ; ISNAT ; IF_NONE { PUSH int 762 ; FAILWITH } {} ; UPDATE 11 ; DUP ; DUG 6 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 12 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 763 ; FAILWITH } {} ; DIG 8 ; DIG 13 ; GET 3 ; CAR ; GET 4 ; DUP 14 ; CAR ; GET ; IF_NONE { PUSH int 764 ; FAILWITH } {} ; GET 4 ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong liquidated net credit" ; FAILWITH } {} ; UPDATE 4 ; SOME ; SWAP ; UPDATE ; DUP ; DUP 11 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 768 ; FAILWITH } {} ; DUP 12 ; GET 3 ; DIG 10 ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong liquidated shares" ; FAILWITH } {} ; UPDATE 3 ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 3 ; NIL operation ; DIG 3 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 966 ; FAILWITH } {} ; DIG 2 ; DIG 3 ; SUB_MUTEZ ; IF_NONE { PUSH int 966 ; FAILWITH } {} ; UNIT ; TRANSFER_TOKENS ; CONS } { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "Amount is not allowed." ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SENDER ; MEM ; IF {} { PUSH string "Unknown Address." ; FAILWITH } ; DUP ; BALANCE ; COMPARE ; GE ; IF {} { PUSH string "Not enough balance" ; FAILWITH } ; NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 3 ; DIG 2 ; DIG 3 ; DIG 3 ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; NIL operation } ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CDR ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; DUP 6 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; NEG ; EDIV ; IF_NONE { PUSH int 39 ; FAILWITH } {} ; CAR ; ABS ; DUP 4 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP ; SENDER ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 654 ; FAILWITH } {} ; DUP 10 ; DIG 13 ; CAR ; GET 9 ; SENDER ; GET ; IF_NONE { PUSH int 655 ; FAILWITH } {} ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH string "too much amount" ; FAILWITH } {} ; UPDATE 2 ; SOME ; SWAP ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 4 ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DIG 5 ; DIG 8 ; GET 7 ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH string "wrong total deposit value" ; FAILWITH } {} ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; DUG 2 ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 659 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP } } { DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; CAR ; CAR ; CDR ; IF {} { PUSH string "Bad status." ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; PUSH bool False ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { NIL operation ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 1000000000000000000 ; DUP 6 ; CAR ; CAR ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP ; DUP 4 ; CAR ; CAR ; CAR ; GET 3 ; CONTRACT %tokenToXtz (pair (address %to) (pair (nat %tokensSold) (pair (mutez %minXtzBought) (timestamp %deadline)))) ; IF_NONE { PUSH string "cant call tokenToXtz" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH int 1 ; NOW ; ADD ; PUSH mutez 0 ; DUP 7 ; SELF_ADDRESS ; PAIR 4 ; DIG 4 ; DROP ; DIG 4 ; DROP ; TRANSFER_TOKENS ; CONS ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "cant call approve for tzBTC shares" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 0 ; DUP 5 ; CAR ; CAR ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NotAdmin" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; CDR ; DIG 5 ; PAIR ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation } } } { IF_LEFT { DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SET_DELEGATE ; NIL operation ; SWAP ; CONS } { DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 5 ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DUP 6 ; CAR ; SWAP ; PAIR ; SWAP ; CAR ; DUP 6 ; GET 3 ; DIG 6 ; GET 4 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; NIL operation } { IF_LEFT { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { DIG 3 ; DROP ; NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; NIL operation } ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CAR ; DIG 6 ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DUP ; PUSH nat 277777777 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "price change rate max value error" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DIG 5 ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NIL operation } } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DUP ; CAR ; PUSH nat 20 ; SWAP ; COMPARE ; GE ; IF {} { PUSH string "max_leverage min value error" ; FAILWITH } ; DUP ; CAR ; PUSH nat 100 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "max_leverage max value error" ; FAILWITH } ; DUP ; GET 3 ; PUSH nat 100 ; COMPARE ; LT ; IF {} { PUSH string "onchain_liquidation_percent min value error" ; FAILWITH } ; DUP ; GET 3 ; PUSH nat 200 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "onchain_liquidation_percent max value error" ; FAILWITH } ; DUP ; GET 5 ; PUSH nat 100 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "onchain_liquidation_comm max value error" ; FAILWITH } ; DUP ; GET 7 ; PUSH nat 100 ; COMPARE ; LT ; IF {} { PUSH string "liquidation_percent min value error" ; FAILWITH } ; DUP ; GET 7 ; PUSH nat 200 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "liquidation_percent max value error" ; FAILWITH } ; DUP ; GET 9 ; PUSH nat 100 ; COMPARE ; LT ; IF {} { PUSH string "liquidation_price_percent min value error" ; FAILWITH } ; DUP ; GET 7 ; SWAP ; DUP ; DUG 2 ; GET 9 ; COMPARE ; LE ; IF {} { PUSH string "liquidation_percent max value error" ; FAILWITH } ; DUP ; GET 11 ; PUSH nat 100 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "liquidation_comm max value error" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DUP 6 ; CAR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; UNPAIR ; CDR ; DUP 5 ; GET 3 ; DUP 6 ; GET 5 ; PAIR ; PAIR ; PAIR ; SWAP ; UNPAIR ; CDR ; DUP 5 ; GET 7 ; DUP 6 ; GET 9 ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CAR ; DUP 7 ; GET 11 ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 5 ; GET 12 ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; NIL operation } { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { DIG 3 ; DROP ; NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; NIL operation } ; PUSH nat 12857 ; DIG 2 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 4 ; CAR ; ADD ; COMPARE ; LE ; IF {} { PUSH string "rate2 max value error" ; FAILWITH } ; PUSH nat 100 ; DUP 3 ; GET 6 ; COMPARE ; LE ; IF {} { PUSH string "wrong threshold percent" ; FAILWITH } ; SWAP ; DUP ; GET 6 ; SWAP ; DUP ; DUG 3 ; GET 5 ; COMPARE ; LE ; IF {} { PUSH string "wrong threshold percent" ; FAILWITH } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DUP 8 ; CAR ; DUP 9 ; GET 3 ; SWAP ; PAIR ; PAIR ; DUP 8 ; GET 5 ; UPDATE 3 ; DIG 7 ; GET 6 ; UPDATE 4 ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP } } { DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DUP ; PUSH nat 2000 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "upfront commission max value error" ; FAILWITH } ; UPDATE 12 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; PUSH (option (pair (map address nat) nat)) (Some (Pair {} 0)) ; DUP 9 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM ; IF {} { SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; PUSH (option (pair (map address nat) nat)) (Some (Pair {} 0)) ; DUP 9 ; GET 3 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; CAR ; GET 9 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 81 ; FAILWITH } {} ; CAR ; SENDER ; MEM ; IF { DUP ; GET 4 ; DUP 3 ; CAR ; GET 9 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 82 ; FAILWITH } {} ; CAR ; SENDER ; GET ; IF_NONE { PUSH int 82 ; FAILWITH } {} ; COMPARE ; GE } { PUSH bool False } ; IF {} { PUSH string "NotEnoughAllowance" ; FAILWITH } } {} ; DUP ; GET 4 ; DUP 3 ; CAR ; GET 9 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 85 ; FAILWITH } {} ; CDR ; COMPARE ; GE ; IF {} { PUSH string "NotEnoughBalance" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP ; DUP 9 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 86 ; FAILWITH } {} ; DUP 10 ; GET 4 ; DIG 11 ; CAR ; GET 9 ; DUP 12 ; CAR ; GET ; IF_NONE { PUSH int 86 ; FAILWITH } {} ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH int 86 ; FAILWITH } {} ; UPDATE 2 ; SOME ; SWAP ; UPDATE ; DUP ; DUP 9 ; GET 3 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 87 ; FAILWITH } {} ; DUP ; CDR ; DUP 11 ; GET 4 ; ADD ; UPDATE 2 ; SOME ; SWAP ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP ; DUP 9 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 89 ; FAILWITH } {} ; DUP ; CAR ; DUP 11 ; GET 4 ; DIG 12 ; CAR ; GET 9 ; DIG 12 ; CAR ; GET ; IF_NONE { PUSH int 89 ; FAILWITH } {} ; CAR ; SENDER ; GET ; IF_NONE { PUSH int 89 ; FAILWITH } {} ; SUB ; ISNAT ; IF_NONE { PUSH int 89 ; FAILWITH } {} ; SOME ; SENDER ; UPDATE ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } { DROP } ; NIL operation } { DROP ; DUP ; CAR ; GET 3 ; GET 3 ; NOW ; COMPARE ; NEQ ; IF { NIL operation ; DIG 2 ; UNIT ; SWAP ; DUG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 5 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { SWAP ; DROP ; NIL operation } } } } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; IF_LEFT { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; CAR ; CAR ; CAR ; IF {} { PUSH string "Bad status." ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CDR ; PUSH bool False ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 5 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; DIG 6 ; UPDATE 3 ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR } ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SENDER ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; DIG 6 ; UPDATE 4 ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NotAdmin" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP 7 ; CDR ; SOME ; DIG 7 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { NOW ; DUP 3 ; CAR ; GET 3 ; GET 3 ; COMPARE ; NEQ ; IF { NIL operation ; DUP 4 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; DIG 4 ; DIG 4 ; DIG 3 ; DIG 4 ; DIG 4 ; DUP 3 ; CAR ; CAR ; CAR ; GET 4 ; CONTRACT %getTotalSupply (pair (unit %request) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getTotalSupply of lb token" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateLqtTotalCallback ; UNIT ; PAIR ; TRANSFER_TOKENS ; CONS ; DUP 3 ; CAR ; CAR ; GET 3 ; CAR ; CONTRACT %getBalance (pair (address %owner) (contract %callback nat)) ; IF_NONE { PUSH string "cant call getBalance for tzBTC" ; FAILWITH } {} ; PUSH mutez 0 ; SELF %updateTzbtcPoolCallback ; DUP 6 ; GET 3 ; CAR ; GET 3 ; PAIR ; TRANSFER_TOKENS ; CONS ; SELF %calculateLbPrice ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; SENDER ; DUP 4 ; CAR ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "Forbidden." ; FAILWITH } ; DIG 2 ; DUP ; CAR ; CAR ; CAR ; CAR ; CDR ; SWAP ; DUP ; DUG 4 ; GET 7 ; CDR ; MUL ; DIG 3 ; DUP ; CAR ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 5 ; GET 9 ; MUL ; PUSH nat 1000000000000 ; PUSH nat 1000000 ; PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; MUL ; MUL ; ADD ; SUB ; DUP ; PUSH int 0 ; COMPARE ; LT ; IF { PUSH mutez 1 ; PUSH nat 1000000 ; PUSH nat 1000000000000 ; DUP 4 ; ISNAT ; IF_NONE { PUSH int 408 ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH int 408 ; FAILWITH } { CAR } ; EDIV ; IF_NONE { PUSH int 35 ; FAILWITH } { CAR } ; MUL ; DUP ; PUSH mutez 0 ; COMPARE ; LT ; IF { DUP ; BALANCE ; COMPARE ; GT ; IF { SWAP ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; SWAP ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 411 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 413 ; FAILWITH } {} ; BALANCE ; UNIT ; TRANSFER_TOKENS ; CONS } } { DROP 2 ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } } { DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } } } } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }