x
801
1623
{ parameter (or
(or
(or
(or
(pair %add_liquidity (address %owner)
(pair (nat %min_lqt_minted)
(pair
(or %src_token (address %fa1)
(or
(pair %fa2
(address %contract)
(nat %token_id))
(unit %tez)))
(pair (nat %src_token_amount)
(pair
(map %other_tokens_max_deposited
(or (address %fa1)
(or
(pair %fa2
(address %contract)
(nat %token_id))
(unit %tez)))
nat)
(timestamp %deadline))))))
(pair %add_liquidity_internal
(pair %param (address %owner)
(pair (nat %min_lqt_minted)
(pair
(or %src_token (address %fa1)
(or
(pair %fa2
(address %contract)
(nat %token_id))
(unit %tez)))
(pair (nat %src_token_amount)
(pair
(map %other_tokens_max_deposited
(or (address %fa1)
(or
(pair %fa2
(address %contract)
(nat %token_id))
(unit %tez)))
nat)
(timestamp %deadline))))))
(address %sender)))
(or (unit %default)
(or (bool %enable) (address %propose_administrator))))
(or
(or (address %remove_administrator)
(or
(pair %remove_liquidity (address %receiver)
(pair (nat %lqt_burned)
(pair
(map %min_tokens_withdrawn
(or (address %fa1)
(or
(pair %fa2
(address %contract)
(nat %token_id))
(unit %tez)))
nat)
(timestamp %deadline))))
(pair %remove_liquidity_internal
(pair %param (address %receiver)
(pair (nat %lqt_burned)
(pair
(map %min_tokens_withdrawn
(or (address %fa1)
(or
(pair %fa2 (address %contract)
(nat %token_id))
(unit %tez)))
nat)
(timestamp %deadline))))
(address %sender))))
(or (unit %request_own_balances)
(or (unit %set_administrator) (nat %set_amplitude)))))
(or
(or
(or (option %set_baker key_hash)
(address %set_baking_rewards_receiver))
(or (nat %set_fa1_balance)
(or
(list %set_fa2_balance (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))
(address %set_lqt_address))))
(or
(or (pair %set_rewards_ratio (nat %numerator) (nat %denominator))
(or (address %set_rewards_receiver)
(pair %set_swap_fee (nat %numerator) (nat %denominator))))
(or (address %set_target_oracle)
(or
(pair %token_swap
(or %src_token (address %fa1)
(or
(pair %fa2 (address %contract)
(nat %token_id))
(unit %tez)))
(pair
(or %dst_token (address %fa1)
(or
(pair %fa2 (address %contract)
(nat %token_id))
(unit %tez)))
(pair (nat %amount_sold)
(pair (nat %min_amount_bought)
(pair (address %receiver) (timestamp %deadline))))))
(pair %token_swap_internal
(pair %param
(or %src_token (address %fa1)
(or
(pair %fa2 (address %contract)
(nat %token_id))
(unit %tez)))
(pair
(or %dst_token (address %fa1)
(or
(pair %fa2 (address %contract)
(nat %token_id))
(unit %tez)))
(pair (nat %amount_sold)
(pair (nat %min_amount_bought)
(pair (address %receiver)
(timestamp %deadline))))))
(address %sender))))))) ;
storage (pair
(pair (pair (big_map %administrators address nat) (nat %amplitude))
(pair (address %baking_rewards_receiver)
(pair (bool %enabled) (address %lqt_address))))
(pair
(pair (nat %lqt_total)
(pair (pair %rewards_ratio (nat %numerator) (nat %denominator))
(address %rewards_receiver)))
(pair (pair %swap_fee (nat %numerator) (nat %denominator))
(pair (address %target_oracle)
(map %tokens
(or (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id))
(unit %tez)))
(pair (nat %funds) (nat %multiplier))))))) ;
code { LAMBDA
(pair
(pair (or address (or (pair address nat) unit))
(pair address (pair address nat)))
(pair (list operation)
(pair
(pair (pair (big_map address nat) nat)
(pair address (pair bool address)))
(pair (pair nat (pair (pair nat nat) address))
(pair (pair nat nat)
(pair address
(map (or address (or (pair address nat) unit))
(pair nat nat))))))))
(pair unit
(pair (list operation)
(pair
(pair (pair (big_map address nat) nat)
(pair address (pair bool address)))
(pair (pair nat (pair (pair nat nat) address))
(pair (pair nat nat)
(pair address
(map
(or address (or (pair address nat) unit))
(pair nat nat))))))))
{ UNPAIR 3 ;
SWAP ;
DUP 2 ;
CAR ;
IF_LEFT
{ PUSH nat 0 ;
DUP 4 ;
GET 6 ;
COMPARE ;
GT ;
IF
{ CONTRACT %transfer (pair (address %from)
(pair (address %to) (nat %value))) ;
IF_NONE { PUSH int 21 ; FAILWITH } {} ;
PUSH mutez 0 ;
DUP 4 ;
GET 6 ;
DUP 5 ;
GET 5 ;
DIG 5 ;
GET 3 ;
PAIR 3 ;
TRANSFER_TOKENS ;
CONS }
{ DROP ; SWAP ; DROP } }
{ IF_LEFT
{ PUSH nat 0 ;
DUP 4 ;
GET 6 ;
COMPARE ;
GT ;
IF
{ SWAP ;
DUP 2 ;
CAR ;
CONTRACT %transfer (list (pair (address %from_)
(list %txs (pair (address %to_)
(pair
(nat %token_id)
(nat %amount)))))) ;
IF_NONE { PUSH int 38 ; FAILWITH } {} ;
PUSH mutez 0 ;
NIL (pair address (list (pair address (pair nat nat)))) ;
NIL (pair address (pair nat nat)) ;
DUP 7 ;
GET 6 ;
DIG 6 ;
CDR ;
DUP 8 ;
GET 5 ;
PAIR 3 ;
CONS ;
DIG 5 ;
GET 3 ;
PAIR ;
CONS ;
TRANSFER_TOKENS ;
CONS }
{ DROP ; SWAP ; DROP } }
{ DROP ;
SELF_ADDRESS ;
DUP 3 ;
GET 3 ;
COMPARE ;
EQ ;
IF
{ PUSH nat 0 ;
DUP 3 ;
GET 6 ;
COMPARE ;
GT ;
IF
{ DUP 2 ;
GET 5 ;
CONTRACT unit ;
IF_NONE { PUSH int 188 ; FAILWITH } {} ;
PUSH mutez 1 ;
DIG 3 ;
GET 6 ;
MUL ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ SWAP ; DROP } }
{ SWAP ; DROP } } } ;
UNIT ;
PAIR 3 } ;
SWAP ;
LAMBDA
(pair (pair int address)
(pair (list operation)
(pair
(pair (pair (big_map address nat) nat)
(pair address (pair bool address)))
(pair (pair nat (pair (pair nat nat) address))
(pair (pair nat nat)
(pair address
(map
(or address (or (pair address nat) unit))
(pair nat nat))))))))
(pair unit
(pair (list operation)
(pair
(pair (pair (big_map address nat) nat)
(pair address (pair bool address)))
(pair (pair nat (pair (pair nat nat) address))
(pair (pair nat nat)
(pair address
(map
(or address (or (pair address nat) unit))
(pair nat nat))))))))
{ UNPAIR 3 ;
SWAP ;
DUP 3 ;
CAR ;
GET 6 ;
CONTRACT %mintOrBurn (pair (int %quantity) (address %target)) ;
IF_NONE { PUSH string "InvalidEntrypoint: mintOrBurn" ; FAILWITH } {} ;
PUSH mutez 0 ;
DIG 3 ;
TRANSFER_TOKENS ;
CONS ;
UNIT ;
PAIR 3 } ;
SWAP ;
LAMBDA
unit
unit
{ DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ;
SWAP ;
LAMBDA
(pair unit
(pair
(pair (pair (big_map address nat) nat)
(pair address (pair bool address)))
(pair (pair nat (pair (pair nat nat) address))
(pair (pair nat nat)
(pair address
(map (or address (or (pair address nat) unit))
(pair nat nat)))))))
(pair unit
(pair
(pair (pair (big_map address nat) nat)
(pair address (pair bool address)))
(pair (pair nat (pair (pair nat nat) address))
(pair (pair nat nat)
(pair address
(map (or address (or (pair address nat) unit))
(pair nat nat)))))))
{ CDR ;
PUSH nat 1 ;
DUP 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
GET ;
IF_NONE { PUSH int 21 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
UNIT ;
PAIR } ;
SWAP ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DUP ;
GET 9 ;
DUP 2 ;
GET 7 ;
SOME ;
DUP 3 ;
GET 5 ;
UPDATE ;
PUSH bool True ;
DUP 4 ;
CAR ;
GET 5 ;
COMPARE ;
EQ ;
IF {} { PUSH string "PoolDisabled" ; FAILWITH } ;
NOW ;
DUP 3 ;
GET 10 ;
COMPARE ;
GE ;
IF {} { PUSH string "DeadlinePassed" ; FAILWITH } ;
DUP 3 ;
GET 8 ;
SIZE ;
DUP 2 ;
SIZE ;
COMPARE ;
EQ ;
IF {} { PUSH string "InvalidNumberOfTokens" ; FAILWITH } ;
DUP ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
MEM ;
IF
{ PUSH mutez 1 ;
AMOUNT ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
DUP 2 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
GET ;
IF_NONE { PUSH int 220 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH string "InvalidTezAmountSent" ; FAILWITH } }
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "InvalidTezAmountSent" ; FAILWITH } } ;
PUSH mutez 1 ;
BALANCE ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
PUSH mutez 1 ;
AMOUNT ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
DUP ;
DUP 3 ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 227 ; FAILWITH } {} ;
DUP 6 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
MEM ;
IF
{ SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DUP 3 ;
DUP ;
GET 8 ;
DIG 4 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
GET ;
IF_NONE { PUSH int 229 ; FAILWITH } {} ;
CDR ;
DIG 3 ;
PAIR ;
SOME ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
UPDATE ;
UPDATE 8 ;
SWAP ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
DUP 2 ;
GET 5 ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "TezMustBeTheSourceToken" ; FAILWITH } }
{ DROP 4 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } ;
NIL operation ;
SELF %request_own_balances ;
PUSH mutez 0 ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
SELF %add_liquidity_internal ;
PUSH mutez 0 ;
SENDER ;
DIG 4 ;
PAIR ;
TRANSFER_TOKENS ;
CONS }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DUP 4 ;
UNIT ;
EXEC ;
DUP 3 ;
GET 8 ;
DUP 3 ;
CAR ;
GET 5 ;
MEM ;
IF {} { PUSH string "UnknownToken" ; FAILWITH } ;
DUP 3 ;
GET 8 ;
DUP 3 ;
CAR ;
GET 5 ;
GET ;
IF_NONE { PUSH int 249 ; FAILWITH } {} ;
CAR ;
DUP 3 ;
CAR ;
GET 9 ;
DUP 4 ;
CAR ;
GET 7 ;
SOME ;
DUP 5 ;
CAR ;
GET 5 ;
UPDATE ;
NIL operation ;
DUP 2 ;
ITER { DUP 7 ;
GET 8 ;
DUP 2 ;
CAR ;
MEM ;
IF {} { PUSH string "UnknownToken" ; FAILWITH } ;
DUP 4 ;
DUP 8 ;
GET 8 ;
DUP 3 ;
CAR ;
GET ;
IF_NONE { PUSH int 259 ; FAILWITH } {} ;
CAR ;
DUP 8 ;
CAR ;
GET 7 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 259 ; FAILWITH } { CAR } ;
DUP 2 ;
CDR ;
DUP 2 ;
COMPARE ;
LE ;
IF
{}
{ PUSH string "CannotDepositMoreThanSetValue" ;
FAILWITH } ;
DUP 8 ;
DUP ;
GET 8 ;
DUP 10 ;
GET 8 ;
DUP 5 ;
CAR ;
GET ;
IF_NONE { PUSH int 264 ; FAILWITH } {} ;
CDR ;
DUP 4 ;
DIG 11 ;
GET 8 ;
DUP 7 ;
CAR ;
GET ;
IF_NONE { PUSH int 263 ; FAILWITH } {} ;
CAR ;
ADD ;
PAIR ;
SOME ;
DUP 5 ;
CAR ;
UPDATE ;
UPDATE 8 ;
DUG 7 ;
DUP 12 ;
DUP 2 ;
SELF_ADDRESS ;
DUP 10 ;
CDR ;
DUP 6 ;
CAR ;
PAIR 4 ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SWAP ;
DIG 7 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 9 ;
DIG 9 ;
DIG 9 ;
DIG 9 ;
DIG 5 ;
DIG 9 ;
DIG 9 ;
DIG 9 ;
DIG 9 ;
DIG 9 } ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
DIG 5 ;
DROP ;
SWAP ;
DUP 4 ;
GET 3 ;
CAR ;
DUP 4 ;
CAR ;
GET 7 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 276 ; FAILWITH } { CAR } ;
DUP 3 ;
CAR ;
GET 3 ;
DUP 2 ;
COMPARE ;
GE ;
IF {} { PUSH string "CannotMintEnoughLiquidity" ; FAILWITH } ;
DIG 3 ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
DUP 5 ;
ADD ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
DUG 3 ;
DIG 4 ;
DIG 3 ;
CAR ;
CAR ;
DIG 2 ;
INT ;
PAIR ;
SWAP ;
DUG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR } }
{ IF_LEFT
{ DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SELF_ADDRESS ;
DUP 2 ;
CAR ;
GET 3 ;
COMPARE ;
NEQ ;
IF
{ NIL operation ;
DUP 2 ;
CAR ;
GET 3 ;
CONTRACT unit ;
IF_NONE { PUSH int 204 ; FAILWITH } {} ;
AMOUNT ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ NIL operation } }
{ IF_LEFT
{ 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 ;
CDR ;
DIG 4 ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR }
{ 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 ;
PUSH (option nat) (Some 0) ;
DIG 5 ;
UPDATE ;
PAIR ;
PAIR ;
PAIR } ;
NIL operation } } }
{ IF_LEFT
{ IF_LEFT
{ 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 ;
NONE nat ;
DIG 5 ;
UPDATE ;
PAIR ;
PAIR ;
PAIR ;
NIL operation }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
PUSH bool True ;
DUP 3 ;
CAR ;
GET 5 ;
COMPARE ;
EQ ;
IF {} { PUSH string "PoolDisabled" ; FAILWITH } ;
NOW ;
DUP 2 ;
GET 6 ;
COMPARE ;
GE ;
IF {} { PUSH string "DeadlinePassed" ; FAILWITH } ;
DUP 2 ;
GET 8 ;
SIZE ;
DUP 2 ;
GET 5 ;
SIZE ;
COMPARE ;
EQ ;
IF {} { PUSH string "InvalidNumberOfTokens" ; FAILWITH } ;
PUSH mutez 1 ;
BALANCE ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
DUP 3 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
MEM ;
IF
{ DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DUP 3 ;
DUP ;
GET 8 ;
DIG 4 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
GET ;
IF_NONE { PUSH int 298 ; FAILWITH } {} ;
CDR ;
DIG 3 ;
PAIR ;
SOME ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
UPDATE ;
UPDATE 8 ;
SWAP }
{ DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } ;
NIL operation ;
SELF %request_own_balances ;
PUSH mutez 0 ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
SELF %remove_liquidity_internal ;
PUSH mutez 0 ;
SENDER ;
DIG 4 ;
PAIR ;
TRANSFER_TOKENS ;
CONS }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DUP 4 ;
UNIT ;
EXEC ;
NIL operation ;
DUP 3 ;
CAR ;
GET 5 ;
ITER { DUP 5 ;
GET 8 ;
DUP 2 ;
CAR ;
MEM ;
IF {} { PUSH string "UnknownToken" ; FAILWITH } ;
DUP 5 ;
GET 3 ;
CAR ;
DUP 6 ;
GET 8 ;
DUP 3 ;
CAR ;
GET ;
IF_NONE { PUSH int 322 ; FAILWITH } {} ;
CAR ;
DUP 6 ;
CAR ;
GET 3 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 322 ; FAILWITH } { CAR } ;
DUP 2 ;
CDR ;
DUP 2 ;
COMPARE ;
GE ;
IF
{}
{ PUSH string "CannotWithdrawLessThanSetValue" ;
FAILWITH } ;
DUP 6 ;
DUP ;
GET 8 ;
DUP 8 ;
GET 8 ;
DUP 5 ;
CAR ;
GET ;
IF_NONE { PUSH int 328 ; FAILWITH } {} ;
CDR ;
DUP 4 ;
DIG 9 ;
GET 8 ;
DUP 7 ;
CAR ;
GET ;
IF_NONE { PUSH int 327 ; FAILWITH } {} ;
CAR ;
SUB ;
ISNAT ;
IF_NONE
{ PUSH string "TooManyTokensWithdrawn" ; FAILWITH }
{} ;
PAIR ;
SOME ;
DUP 5 ;
CAR ;
UPDATE ;
UPDATE 8 ;
DUG 5 ;
DUP 10 ;
DUP 2 ;
DUP 7 ;
CAR ;
CAR ;
SELF_ADDRESS ;
DUP 6 ;
CAR ;
PAIR 4 ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SWAP ;
DIG 5 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR ;
DIG 7 ;
DIG 7 ;
DIG 7 ;
DIG 7 ;
DIG 5 ;
DIG 7 ;
DIG 7 ;
DIG 7 } ;
SWAP ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 4 ;
DROP ;
DUP 2 ;
CAR ;
GET 3 ;
DUP 4 ;
GET 3 ;
CAR ;
SUB ;
ISNAT ;
IF_NONE { PUSH string "TooMuchLqtBurned" ; FAILWITH } {} ;
DIG 3 ;
UNPAIR ;
SWAP ;
UNPAIR ;
CDR ;
DIG 3 ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
DUG 2 ;
DIG 3 ;
DIG 2 ;
DUP ;
CDR ;
SWAP ;
CAR ;
GET 3 ;
PUSH nat 0 ;
SUB ;
PAIR ;
SWAP ;
DUG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR } } }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
SELF_ADDRESS ;
SENDER ;
COMPARE ;
EQ ;
IF { PUSH bool True } { SOURCE ; SENDER ; COMPARE ; EQ } ;
IF {} { PUSH string "SenderNotAllowed" ; FAILWITH } ;
NIL operation ;
DUP 3 ;
GET 8 ;
ITER { CAR ;
IF_LEFT
{ CONTRACT %getBalance (pair address (contract nat)) ;
IF_NONE
{ PUSH string "InvalidEntrypoint: getBalance" ;
FAILWITH }
{} ;
PUSH mutez 0 ;
SELF_ADDRESS ;
CONTRACT %set_fa1_balance nat ;
IF_NONE
{ PUSH string "InvalidFA1SetterEntrypoint" ;
FAILWITH }
{} ;
SELF_ADDRESS ;
PAIR ;
TRANSFER_TOKENS ;
CONS }
{ IF_LEFT
{ SWAP ;
DUP 2 ;
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 string "InvalidEntrypoint: balance_of" ;
FAILWITH }
{} ;
PUSH mutez 0 ;
SELF_ADDRESS ;
CONTRACT %set_fa2_balance (list (pair
(pair %request
(address %owner)
(nat %token_id))
(nat %balance))) ;
IF_NONE
{ PUSH string "InvalidFa2SetterEntrypoint" ;
FAILWITH }
{} ;
NIL (pair address nat) ;
DIG 5 ;
CDR ;
SELF_ADDRESS ;
PAIR ;
CONS ;
PAIR ;
TRANSFER_TOKENS ;
CONS }
{ DROP ;
DUP 3 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
MEM ;
IF
{}
{ PUSH string "InvalidTezToken" ; FAILWITH } } } } ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP }
{ IF_LEFT
{ DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
PUSH nat 0 ;
DUP 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
GET ;
IF_NONE { PUSH int 46 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH int 405 ; FAILWITH } ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
PUSH (option nat) (Some 1) ;
SENDER ;
UPDATE ;
PAIR ;
PAIR ;
PAIR }
{ 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 ;
CAR ;
DIG 3 ;
SWAP ;
PAIR ;
PAIR ;
PAIR } ;
NIL operation } } } }
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ 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 ;
SET_DELEGATE ;
NIL operation ;
SWAP ;
CONS }
{ 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 ;
CDR ;
DIG 3 ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
NIL operation } }
{ IF_LEFT
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DUP 2 ;
GET 8 ;
SENDER ;
LEFT (or (pair address nat) unit) ;
MEM ;
IF {} { PUSH string "UnknownFA1Token" ; FAILWITH } ;
DUP 2 ;
DUP ;
GET 8 ;
DIG 3 ;
GET 8 ;
SENDER ;
LEFT (or (pair address nat) unit) ;
GET ;
IF_NONE { PUSH int 517 ; FAILWITH } {} ;
CDR ;
DIG 3 ;
PAIR ;
SOME ;
SENDER ;
LEFT (or (pair address nat) unit) ;
UPDATE ;
UPDATE 8 }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DUP ;
IF_CONS
{ SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SELF_ADDRESS ;
DUP 2 ;
CAR ;
CAR ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "InvalidBalanceOfResponse" ; FAILWITH } ;
DUP 2 ;
GET 8 ;
DUP 2 ;
CAR ;
CDR ;
SENDER ;
PAIR ;
LEFT unit ;
RIGHT address ;
MEM ;
IF {} { PUSH string "UnknownFA2Token" ; FAILWITH } ;
DUP 2 ;
DUP ;
GET 8 ;
DIG 3 ;
GET 8 ;
DUP 4 ;
CAR ;
CDR ;
SENDER ;
PAIR ;
LEFT unit ;
RIGHT address ;
GET ;
IF_NONE { PUSH int 509 ; FAILWITH } {} ;
CDR ;
DUP 4 ;
CDR ;
PAIR ;
SOME ;
DIG 3 ;
CAR ;
CDR ;
SENDER ;
PAIR ;
LEFT unit ;
RIGHT address ;
UPDATE ;
UPDATE 8 }
{ DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; 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 ;
PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ;
DUP 3 ;
CAR ;
GET 6 ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "LiquidityAddressAlreadySet" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
CAR ;
DIG 4 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR } } ;
NIL operation } }
{ IF_LEFT
{ IF_LEFT
{ 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 ;
DUP ;
CDR ;
DUP 2 ;
CAR ;
COMPARE ;
LE ;
IF {} { PUSH string "RatioShouldBeLessThanOne" ; FAILWITH } ;
PUSH nat 0 ;
DUP 2 ;
CDR ;
COMPARE ;
NEQ ;
IF {} { PUSH string "DenominatorCannotBeZero" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
CDR ;
DIG 4 ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ IF_LEFT
{ 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 ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
CAR ;
DIG 4 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ 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 ;
PUSH nat 0 ;
DUP 2 ;
CDR ;
COMPARE ;
NEQ ;
IF {} { PUSH string "InvalidZeroDenominator" ; FAILWITH } ;
DUP ;
CDR ;
DUP 2 ;
CAR ;
COMPARE ;
LE ;
IF {} { PUSH string "InvalidSwapFee" ; FAILWITH } ;
UPDATE 5 } } ;
NIL operation }
{ IF_LEFT
{ 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 ;
UPDATE 7 ;
NIL operation }
{ IF_LEFT
{ PUSH bool True ;
DUP 3 ;
CAR ;
GET 5 ;
COMPARE ;
EQ ;
IF {} { PUSH string "PoolDisabled" ; FAILWITH } ;
NOW ;
DUP 2 ;
GET 10 ;
COMPARE ;
GE ;
IF {} { PUSH string "DeadlinePassed" ; FAILWITH } ;
DUP 2 ;
GET 8 ;
DUP 2 ;
CAR ;
MEM ;
IF {} { PUSH string "UnknownSrcToken" ; FAILWITH } ;
DUP 2 ;
GET 8 ;
DUP 2 ;
GET 3 ;
MEM ;
IF {} { PUSH string "UnknownDstToken" ; FAILWITH } ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
DUP 2 ;
CAR ;
COMPARE ;
EQ ;
IF
{ PUSH mutez 1 ;
AMOUNT ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
DUP 2 ;
GET 5 ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "InvalidTezAmountSent" ; FAILWITH } }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF
{}
{ PUSH string "InvalidTezAmountSent" ; FAILWITH } } ;
PUSH mutez 1 ;
BALANCE ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
PUSH mutez 1 ;
AMOUNT ;
EDIV ;
IF_NONE { UNIT ; FAILWITH } {} ;
CAR ;
DUP ;
DUP 3 ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 363 ; FAILWITH } {} ;
DUP 5 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
MEM ;
IF
{ SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DUP 3 ;
DUP ;
GET 8 ;
DIG 4 ;
GET 8 ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
GET ;
IF_NONE { PUSH int 365 ; FAILWITH } {} ;
CDR ;
DIG 3 ;
PAIR ;
SOME ;
PUSH (or address (or (pair address nat) unit)) (Right (Right Unit)) ;
UPDATE ;
UPDATE 8 ;
SWAP }
{ DROP 3 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } ;
NIL operation ;
SELF %request_own_balances ;
PUSH mutez 0 ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
SELF %token_swap_internal ;
PUSH mutez 0 ;
SENDER ;
DIG 4 ;
PAIR ;
TRANSFER_TOKENS ;
CONS }
{ DUP 4 ;
UNIT ;
EXEC ;
SELF_ADDRESS ;
DUP 3 ;
CAR ;
GET 5 ;
DUP 4 ;
CAR ;
GET 3 ;
DUP 5 ;
CAR ;
CAR ;
PAIR 3 ;
VIEW "total_expected_out_amount" nat ;
IF_NONE
{ PUSH string "Invalid view: total_expected_out_amount" ;
FAILWITH }
{} ;
DUP 4 ;
GET 5 ;
CDR ;
DUP 2 ;
DUP 6 ;
GET 5 ;
CAR ;
MUL ;
EDIV ;
IF_NONE { PUSH int 392 ; FAILWITH } { CAR } ;
DUP ;
DUP 3 ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 393 ; FAILWITH } {} ;
DUP 5 ;
CAR ;
GET 7 ;
DUP 2 ;
COMPARE ;
GE ;
IF
{}
{ PUSH string "MinAmountBoughtGreaterThanTokensBought" ;
FAILWITH } ;
DUP 6 ;
GET 3 ;
GET 3 ;
CDR ;
DUP 3 ;
DUP 8 ;
GET 3 ;
GET 3 ;
CAR ;
MUL ;
EDIV ;
IF_NONE { PUSH int 398 ; FAILWITH } { CAR } ;
DUP ;
DUP 3 ;
ADD ;
DIG 7 ;
DUP ;
GET 8 ;
DUP ;
DUP 10 ;
CAR ;
CAR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 401 ; FAILWITH } {} ;
DUP ;
CAR ;
DUP 12 ;
CAR ;
GET 5 ;
ADD ;
UPDATE 1 ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 8 ;
DUG 7 ;
DUP ;
DUP 9 ;
GET 8 ;
DUP 9 ;
CAR ;
GET 3 ;
GET ;
IF_NONE { PUSH int 402 ; FAILWITH } {} ;
CAR ;
SUB ;
ISNAT ;
IF_NONE
{ PUSH string "DstTokenWouldBeNegative" ; FAILWITH }
{} ;
DIG 8 ;
DUP ;
GET 8 ;
DUP ;
DUP 11 ;
CAR ;
GET 3 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 402 ; FAILWITH } {} ;
DIG 4 ;
UPDATE 1 ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 8 ;
DUG 7 ;
NIL operation ;
DUP 13 ;
DUP 9 ;
CAR ;
GET 5 ;
SELF_ADDRESS ;
DUP 11 ;
CDR ;
DUP 12 ;
CAR ;
CAR ;
PAIR 4 ;
SWAP ;
DIG 10 ;
DIG 3 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
UNPAIR 3 ;
DIG 13 ;
DIG 13 ;
DIG 13 ;
DIG 13 ;
DIG 6 ;
DUG 13 ;
DUG 13 ;
DUG 13 ;
DUG 13 ;
DUG 13 ;
DUP 14 ;
DUP 6 ;
DUP 11 ;
CAR ;
GET 9 ;
SELF_ADDRESS ;
DUP 13 ;
CAR ;
GET 3 ;
PAIR 4 ;
SWAP ;
DIG 11 ;
DIG 4 ;
DIG 3 ;
PAIR 3 ;
EXEC ;
UNPAIR 3 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 6 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 14 ;
DIG 13 ;
DIG 14 ;
DIG 14 ;
DUP 15 ;
DUP 6 ;
DUP 13 ;
GET 3 ;
GET 4 ;
SELF_ADDRESS ;
DUP 14 ;
CAR ;
GET 3 ;
PAIR 4 ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
SWAP ;
DUG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR } } } } } ;
NIL operation ;
SWAP ;
ITER { CONS } ;
PAIR } ;
view "get_invariant" unit nat
{ UNPAIR ;
PUSH nat 0 ;
PUSH nat 0 ;
PUSH nat 1 ;
DUP 5 ;
GET 8 ;
SIZE ;
PUSH nat 1 ;
DUP 7 ;
GET 8 ;
ITER { DUP 8 ;
GET 7 ;
DUP 2 ;
CAR ;
VIEW "get_token_price" (pair (nat %numerator) (nat %denominator)) ;
IF_NONE { PUSH string "InvalidView: get_token_price" ; FAILWITH } {} ;
UNPAIR ;
DIG 2 ;
DUP ;
GET 4 ;
SWAP ;
GET 3 ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 559 ; FAILWITH } { CAR } ;
DIG 4 ;
DUP 2 ;
ADD ;
DUG 4 ;
DIG 3 ;
MUL ;
DUG 2 ;
DUP 2 ;
SWAP ;
MUL } ;
DUP ;
DUP 8 ;
CAR ;
CAR ;
CDR ;
MUL ;
PUSH nat 2 ;
DUP 6 ;
ADD ;
DUP 6 ;
PUSH nat 1 ;
DUP 3 ;
DUP 3 ;
SUB ;
ABS ;
COMPARE ;
GT ;
LOOP { SWAP ;
DROP ;
DUP 5 ;
DUP 4 ;
MUL ;
DUP 2 ;
DUP 3 ;
DUP 4 ;
DUP 5 ;
MUL ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 572 ; FAILWITH } { CAR } ;
DUP ;
DUP 8 ;
DUP 5 ;
MUL ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 573 ; FAILWITH } {} ;
PUSH nat 1 ;
DUP 5 ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 574 ; FAILWITH } {} ;
DUP 2 ;
EDIV ;
IF_NONE { PUSH int 574 ; FAILWITH } { CAR } ;
DUG 2 ;
DIG 9 ;
PUSH nat 1 ;
ADD ;
DUG 9 ;
PUSH nat 200 ;
DUP 11 ;
COMPARE ;
EQ ;
IF { DIG 3 ; DROP 3 ; DUP } { DROP 2 } ;
PUSH nat 1 ;
DUP 3 ;
DUP 3 ;
SUB ;
ABS ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
PUSH nat 200 ;
DIG 2 ;
COMPARE ;
LT ;
IF {} { PUSH string "InvariantDoesNotConverge" ; FAILWITH } } ;
view "get_invariant_debug"
(map
(or (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez)))
nat)
nat
{ UNPAIR ;
PUSH nat 0 ;
PUSH nat 0 ;
PUSH nat 1 ;
DUP 4 ;
SIZE ;
PUSH nat 1 ;
DUP 6 ;
ITER { CDR ; DIG 4 ; DUP 2 ; ADD ; DUG 4 ; DIG 3 ; MUL ; DUG 2 ; DUP 2 ; SWAP ; MUL } ;
DUP ;
DUP 8 ;
CAR ;
CAR ;
CDR ;
MUL ;
PUSH nat 2 ;
DUP 6 ;
ADD ;
DUP 6 ;
PUSH nat 1 ;
DUP 3 ;
DUP 3 ;
SUB ;
ABS ;
COMPARE ;
GT ;
LOOP { SWAP ;
DROP ;
DUP 5 ;
DUP 4 ;
MUL ;
DUP 2 ;
DUP 3 ;
DUP 4 ;
DUP 5 ;
MUL ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 726 ; FAILWITH } { CAR } ;
DUP ;
DUP 8 ;
DUP 5 ;
MUL ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 727 ; FAILWITH } {} ;
PUSH nat 1 ;
DUP 5 ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 728 ; FAILWITH } {} ;
DUP 2 ;
EDIV ;
IF_NONE { PUSH int 728 ; FAILWITH } { CAR } ;
DUG 2 ;
DIG 9 ;
PUSH nat 1 ;
ADD ;
DUG 9 ;
PUSH nat 200 ;
DUP 11 ;
COMPARE ;
EQ ;
IF { DIG 3 ; DROP 3 ; DUP } { DROP 2 } ;
PUSH nat 1 ;
DUP 3 ;
DUP 3 ;
SUB ;
ABS ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
PUSH nat 200 ;
DIG 2 ;
COMPARE ;
LT ;
IF {} { PUSH string "InvariantDoesNotConverge" ; FAILWITH } } ;
view "get_liquidity_funds" unit nat { CDR ; GET 3 ; CAR } ;
view "get_liquidity_usd_price" unit (pair (nat %numerator) (nat %denominator))
{ UNPAIR ;
PUSH nat 0 ;
DUP 3 ;
GET 8 ;
ITER { DUP 4 ;
GET 7 ;
DUP 2 ;
CAR ;
VIEW "get_token_price" (pair (nat %numerator) (nat %denominator)) ;
IF_NONE { PUSH string "InvalidView: get_token_price" ; FAILWITH } {} ;
PUSH nat 100 ;
DUP 2 ;
CDR ;
MUL ;
SWAP ;
CAR ;
DIG 2 ;
DUP ;
GET 4 ;
SWAP ;
GET 3 ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 696 ; FAILWITH } { CAR } ;
ADD } ;
SWAP ;
DROP ;
SWAP ;
GET 3 ;
CAR ;
SWAP ;
PAIR } ;
view "get_token_funds"
(or (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez)))
nat
{ UNPAIR ;
DUP 2 ;
GET 8 ;
DUP 2 ;
MEM ;
IF {} { PUSH string "UnknownToken" ; FAILWITH } ;
SWAP ;
GET 8 ;
SWAP ;
GET ;
IF_NONE { PUSH int 661 ; FAILWITH } {} ;
CAR } ;
view "get_token_funds_in_usd"
(or (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez)))
(pair (nat %numerator) (nat %denominator))
{ UNPAIR ;
DUP 2 ;
GET 8 ;
DUP 2 ;
MEM ;
IF {} { PUSH string "UnknownToken" ; FAILWITH } ;
DUP 2 ;
GET 7 ;
DUP 2 ;
VIEW "get_token_price" (pair (nat %numerator) (nat %denominator)) ;
IF_NONE { PUSH string "InvalidView: get_token_price" ; FAILWITH } {} ;
UNPAIR ;
DIG 3 ;
GET 8 ;
DIG 3 ;
GET ;
IF_NONE { PUSH int 675 ; FAILWITH } {} ;
CAR ;
MUL ;
PAIR } ;
view "tokens_bought_debug"
(pair
(pair
(or %dst_token (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id))
(unit %tez)))
(map %funds
(or (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez)))
nat))
(pair (nat %sold_amount)
(or %src_token (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id))
(unit %tez)))))
nat
{ UNPAIR ;
SELF_ADDRESS ;
DUP 2 ;
CAR ;
CDR ;
VIEW "get_invariant_view_complex" nat ;
IF_NONE { PUSH string "Invalid view" ; FAILWITH } {} ;
PUSH nat 0 ;
PUSH nat 1 ;
DUP 4 ;
CAR ;
CDR ;
SIZE ;
PUSH nat 1 ;
DUP 6 ;
UNPAIR ;
UNPAIR ;
SWAP ;
DUP ;
DUP 10 ;
GET 4 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 760 ; FAILWITH } {} ;
DIG 10 ;
GET 3 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
SWAP ;
PAIR ;
PAIR ;
DUG 5 ;
DUP 6 ;
CAR ;
CDR ;
ITER { SWAP ;
DUP 3 ;
SWAP ;
MUL ;
SWAP ;
DUP 7 ;
CAR ;
CAR ;
DUP 2 ;
CAR ;
COMPARE ;
NEQ ;
IF
{ DIG 4 ; DUP 2 ; CDR ; ADD ; DUG 4 ; CDR ; DIG 3 ; MUL ; DUG 2 }
{ DROP } } ;
DUP ;
DUP 8 ;
CAR ;
CAR ;
CDR ;
MUL ;
DUP ;
DUP 7 ;
EDIV ;
IF_NONE { PUSH int 768 ; FAILWITH } { CAR } ;
DUP 6 ;
ADD ;
DUP 3 ;
DUP 3 ;
DUP 7 ;
MUL ;
MUL ;
DUP 8 ;
DUP 9 ;
DUP 10 ;
DUP 11 ;
MUL ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 769 ; FAILWITH } { CAR } ;
DUP 8 ;
PUSH nat 2 ;
DUP 10 ;
ADD ;
PUSH nat 0 ;
PUSH nat 1 ;
DUP 4 ;
DUP 4 ;
SUB ;
ABS ;
COMPARE ;
GT ;
LOOP { SWAP ;
DROP ;
DUP 2 ;
SWAP ;
DUP 11 ;
DUP 6 ;
DUP 5 ;
PUSH nat 2 ;
MUL ;
ADD ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 777 ; FAILWITH } {} ;
DUP 5 ;
DIG 4 ;
DUP ;
MUL ;
ADD ;
EDIV ;
IF_NONE { PUSH int 777 ; FAILWITH } { CAR } ;
DUG 2 ;
PUSH nat 1 ;
ADD ;
PUSH nat 200 ;
DUP 2 ;
COMPARE ;
EQ ;
IF { SWAP ; DROP ; DUP 2 ; SWAP } {} ;
PUSH nat 1 ;
DUP 4 ;
DUP 4 ;
SUB ;
ABS ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 3 ;
DROP ;
PUSH nat 200 ;
COMPARE ;
GT ;
IF {} { PUSH string "dyDoesNotConverge" ; FAILWITH } ;
PUSH int 1 ;
SWAP ;
DIG 2 ;
DUP ;
CAR ;
CDR ;
SWAP ;
CAR ;
CAR ;
GET ;
IF_NONE { PUSH int 784 ; FAILWITH } {} ;
SUB ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 784 ; FAILWITH } {} } ;
view "total_expected_out_amount"
(pair
(or %src_token (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez)))
(pair
(or %dst_token (address %fa1)
(or (pair %fa2 (address %contract) (nat %token_id))
(unit %tez)))
(nat %amount_sold)))
nat
{ UNPAIR ;
SELF_ADDRESS ;
UNIT ;
VIEW "get_invariant" nat ;
IF_NONE { PUSH string "Invalid view: get_invariant" ; FAILWITH } {} ;
PUSH nat 0 ;
PUSH nat 1 ;
DUP 5 ;
GET 8 ;
SIZE ;
PUSH nat 1 ;
DUP 7 ;
GET 8 ;
DUP ;
DUP 8 ;
CAR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 601 ; FAILWITH } {} ;
DUP ;
CAR ;
DUP 10 ;
GET 4 ;
ADD ;
UPDATE 1 ;
SOME ;
SWAP ;
UPDATE ;
PUSH nat 0 ;
DUP 2 ;
ITER { DIG 3 ;
DUP 5 ;
SWAP ;
MUL ;
DUG 3 ;
DUP 9 ;
GET 3 ;
DUP 2 ;
CAR ;
COMPARE ;
NEQ ;
IF
{ DUP 10 ;
GET 7 ;
DUP 2 ;
CAR ;
VIEW "get_token_price" (pair (nat %numerator) (nat %denominator)) ;
IF_NONE
{ PUSH string "InvalidView: get_token_price" ; FAILWITH }
{} ;
UNPAIR ;
DUP 3 ;
GET 4 ;
DIG 3 ;
GET 3 ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 616 ; FAILWITH } { CAR } ;
DIG 6 ;
DUP 2 ;
ADD ;
DUG 6 ;
DIG 5 ;
MUL ;
DUG 4 }
{ SWAP ;
DROP ;
DUP 9 ;
GET 7 ;
DUP 2 ;
CAR ;
VIEW "get_token_price" (pair (nat %numerator) (nat %denominator)) ;
IF_NONE
{ PUSH string "InvalidView: get_token_price" ; FAILWITH }
{} ;
UNPAIR ;
DUP 3 ;
GET 4 ;
DIG 3 ;
GET 3 ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 627 ; FAILWITH } { CAR } } } ;
DUP 3 ;
DUP 10 ;
CAR ;
CAR ;
CDR ;
MUL ;
DUP ;
DUP 9 ;
EDIV ;
IF_NONE { PUSH int 631 ; FAILWITH } { CAR } ;
DUP 8 ;
ADD ;
DUP 5 ;
DUP 3 ;
DUP 9 ;
MUL ;
MUL ;
DUP 10 ;
DUP 11 ;
DUP 12 ;
DUP 13 ;
MUL ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 632 ; FAILWITH } { CAR } ;
DUP 10 ;
PUSH nat 2 ;
DUP 12 ;
ADD ;
PUSH nat 0 ;
PUSH nat 1 ;
DUP 4 ;
DUP 4 ;
SUB ;
ABS ;
COMPARE ;
GT ;
LOOP { SWAP ;
DROP ;
DUP 2 ;
SWAP ;
DUP 13 ;
DUP 6 ;
DUP 5 ;
PUSH nat 2 ;
MUL ;
ADD ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 640 ; FAILWITH } {} ;
DUP 5 ;
DIG 4 ;
DUP ;
MUL ;
ADD ;
EDIV ;
IF_NONE { PUSH int 640 ; FAILWITH } { CAR } ;
DUG 2 ;
PUSH nat 1 ;
ADD ;
PUSH nat 200 ;
DUP 2 ;
COMPARE ;
EQ ;
IF { SWAP ; DROP ; DUP 2 ; SWAP } {} ;
PUSH nat 1 ;
DUP 4 ;
DUP 4 ;
SUB ;
ABS ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
PUSH nat 200 ;
COMPARE ;
GT ;
IF {} { PUSH string "dyDoesNotConverge" ; FAILWITH } ;
PUSH int 1 ;
SWAP ;
DIG 2 ;
SUB ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 647 ; FAILWITH } {} ;
DIG 3 ;
GET 7 ;
DUP 4 ;
GET 3 ;
VIEW "get_token_price" (pair (nat %numerator) (nat %denominator)) ;
IF_NONE { PUSH string "InvalidView: get_token_price" ; FAILWITH } {} ;
DUP ;
CAR ;
DIG 3 ;
DIG 4 ;
GET 3 ;
GET ;
IF_NONE { PUSH int 654 ; FAILWITH } {} ;
CDR ;
MUL ;
SWAP ;
CDR ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 654 ; FAILWITH } { CAR } } }