def exec(self, create=False, track_gas=False) -> Union[List[GlobalState], None]:
        """

        :param create:
        :param track_gas:
        :return:
        """
        final_states = []  # type: List[GlobalState]
        for global_state in self.strategy:
            if (
                self.create_timeout
                and create
                and self.time + timedelta(seconds=self.create_timeout) <= datetime.now()
            ):
                return final_states + [global_state] if track_gas else None

            if (
                self.execution_timeout
                and self.time
                + timedelta(seconds=self.execution_timeout / self.transaction_count)
                <= datetime.now()
                and not create
            ):
                return final_states + [global_state] if track_gas else None

            try:
                new_states, op_code = self.execute_state(global_state)
            except NotImplementedError:
                log.debug("Encountered unimplemented instruction")
                continue

            new_states = [
                state for state in new_states if state.mstate.constraints.is_possible
            ]

            self.manage_cfg(op_code, new_states)

            if new_states:
                self.work_list += new_states
            elif track_gas:
                final_states.append(global_state)
            self.total_states += len(new_states)

        return final_states if track_gas else None
def exec ( self , create = False , track_gas = False ) -> Union [ List [ GlobalState ] , None ] : final_states = [ ] for global_state in self . strategy : if ( self . create_timeout and create and self . time + timedelta ( seconds = self . create_timeout ) <= datetime . now ( ) ) : return final_states + [ global_state ] if track_gas else None if ( self . execution_timeout and self . time + timedelta ( seconds = self . execution_timeout / self . transaction_count ) <= datetime . now ( ) and not create ) : return final_states + [ global_state ] if track_gas else None try : new_states , op_code = self . execute_state ( global_state ) except NotImplementedError : log . debug ( "Encountered unimplemented instruction" ) continue new_states = [ state for state in new_states if state . mstate . constraints . is_possible ] self . manage_cfg ( op_code , new_states ) if new_states : self . work_list += new_states elif track_gas : final_states . append ( global_state ) self . total_states += len ( new_states ) return final_states if track_gas else None
:param create:
        :param track_gas:
        :return: