def _outter_split(inpt, delim, openers, closers=None, opener_lookup=None):
    """Splits only at delims that are at outter-most level regarding
    openers/closers pairs.
    Unchecked requirements:
    Only supports length-1 delim, openers and closers.
    delim must not be member of openers or closers.
    len(openers) == len(closers) or closers == None
    """
    if closers is None:
        closers = openers
    if opener_lookup is None:
        opener_lookup = {}
        for i in range(len(openers)):
            opener_lookup[openers[i]] = i
    stack = []
    res = []
    splt = 0
    for i in range(len(inpt)):
        if inpt[i] == delim and len(stack) == 0:
            res.append(inpt[splt:i].strip())
            splt = i + 1
        elif inpt[i] in opener_lookup:
            stack.append(opener_lookup[inpt[i]])
        elif len(stack) > 0 and inpt[i] == closers[stack[-1]]:
            stack.pop()
    res.append(inpt[splt:].strip())
    return res
