input: from typing import List
  
  def eliminate_asterisks(s: str) -> str:
      """
      Given a string s containing multiple '*' symbols, your task is to eliminate all '*' characters.
  
      As long as there is a '*', perform the following step:
  
      Remove the first '*' found and the smallest non-'*' character to its left. If multiple smallest characters exist, any one can be removed.
      Return the smallest lexicographical string possible after all '*' characters are removed.
  
      Examples:
      >>> s = "aaba*"
      aab
      >>> s = "abc"
      abc
  
      Constraints:
      1 <= s.length <= 10^5
      s consists exclusively of lowercase English alphabets and '*'.
      The string is structured such that complete removal of all '*' is possible.
      """
output:     
      stack = []
      
      for char in s:
          if char == '*':
              # Remove the last character added to the stack (smallest non-'*' to its left)
              if stack:
                  stack.pop()
          else:
              # Add non '*' character to the stack
              stack.append(char)
      
      # Joining stack to form the resulting string
      return ''.join(stack)
  