x
101
parameter (or (unit %donate) (or (address %setAdmin) (pair %setFields (address %charity) (pair (mutez %target) (pair (timestamp %timestamp) (string %title))))));storage (pair (address %admin) (pair (address %charity) (pair (map %donations address mutez) (pair (bool %hasSetAdmin) (pair (mutez %target) (pair (timestamp %timestamp) (pair (string %title) (mutez %total_fund))))))));code { UNPAIR ; IF_LEFT { DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; GT ; IF {} { PUSH string "WrongCondition: sp.amount > sp.tez(0)" ; FAILWITH } ; DUP ; GET 14 ; AMOUNT ; ADD ; UPDATE 14 ; DUP ; GET 5 ; SENDER ; MEM ; IF { DUP ; GET 5 ; DUP ; SENDER ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 25 ; FAILWITH } {} ; AMOUNT ; ADD ; SOME ; SWAP ; UPDATE ; UPDATE 5 } { DUP ; GET 5 ; AMOUNT ; SOME ; SENDER ; UPDATE ; UPDATE 5 } ; DUP ; GET 9 ; DUP 2 ; GET 14 ; COMPARE ; GE ; IF { NIL operation ; DUP 2 ; GET 3 ; CONTRACT unit ; IF_NONE { PUSH int 30 ; FAILWITH } {} ; DUP 3 ; GET 14 ; UNIT ; TRANSFER_TOKENS ; CONS ; SWAP ; PUSH mutez 0 ; UPDATE 14 ; EMPTY_MAP address mutez ; UPDATE 5 ; SWAP } { NIL operation } } { IF_LEFT { DUP 2 ; GET 7 ; IF { PUSH string "WrongCondition: not self.data.hasSetAdmin" ; FAILWITH } {} ; UPDATE 1 ; PUSH bool True ; UPDATE 7 } { DUP 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.admin" ; FAILWITH } ; SWAP ; DUP 2 ; GET 6 ; UPDATE 13 ; DUP 2 ; GET 3 ; UPDATE 9 ; DUP 2 ; GET 5 ; UPDATE 11 ; SWAP ; CAR ; UPDATE 3 } ; NIL operation } ; PAIR }