def get_supported(<EOL>versions=None,  <EOL>noarch=False,  <EOL>platform=None,  <EOL>impl=None,  <EOL>abi=None  <EOL>):<EOL>
supported = []<EOL>if versions is None:<EOL><INDENT>version_info = get_impl_version_info()<EOL>versions = get_all_minor_versions_as_strings(version_info)<EOL><DEDENT>impl = impl or get_abbr_impl()<EOL>abis = []  <EOL>abi = abi or get_abi_tag()<EOL>if abi:<EOL><INDENT>abis[<NUM_LIT:0>:<NUM_LIT:0>] = [abi]<EOL><DEDENT>abi3s = set()<EOL>for suffix in get_extension_suffixes():<EOL><INDENT>if suffix.startswith('<STR_LIT>'):<EOL><INDENT>abi3s.add(suffix.split('<STR_LIT:.>', <NUM_LIT:2>)[<NUM_LIT:1>])<EOL><DEDENT><DEDENT>abis.extend(sorted(list(abi3s)))<EOL>abis.append('<STR_LIT:none>')<EOL>if not noarch:<EOL><INDENT>arch = platform or get_platform()<EOL>arch_prefix, arch_sep, arch_suffix = arch.partition('<STR_LIT:_>')<EOL>if arch.startswith('<STR_LIT>'):<EOL><INDENT>match = _osx_arch_pat.match(arch)<EOL>if match:<EOL><INDENT>name, major, minor, actual_arch = match.groups()<EOL>tpl = '<STR_LIT>'.format(name, major)<EOL>arches = []<EOL>for m in reversed(range(int(minor) + <NUM_LIT:1>)):<EOL><INDENT>for a in get_darwin_arches(int(major), m, actual_arch):<EOL><INDENT>arches.append(tpl % (m, a))<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>arches = [arch]<EOL><DEDENT><DEDENT>elif arch_prefix == '<STR_LIT>':<EOL><INDENT>arches = [arch, '<STR_LIT>' + arch_sep + arch_suffix]<EOL><DEDENT>elif platform is None:<EOL><INDENT>arches = []<EOL>if is_manylinux2010_compatible():<EOL><INDENT>arches.append('<STR_LIT>' + arch_sep + arch_suffix)<EOL><DEDENT>if is_manylinux1_compatible():<EOL><INDENT>arches.append('<STR_LIT>' + arch_sep + arch_suffix)<EOL><DEDENT>arches.append(arch)<EOL><DEDENT>else:<EOL><INDENT>arches = [arch]<EOL><DEDENT>for abi in abis:<EOL><INDENT>for arch in arches:<EOL><INDENT>supported.append(('<STR_LIT>' % (impl, versions[<NUM_LIT:0>]), abi, arch))<EOL><DEDENT><DEDENT>for version in versions[<NUM_LIT:1>:]:<EOL><INDENT>if version in {'<STR_LIT>', '<STR_LIT>'}:<EOL><INDENT>break<EOL><DEDENT>for abi in abi3s:   <EOL><INDENT>for arch in arches:<EOL><INDENT>supported.append(("<STR_LIT>" % (impl, version), abi, arch))<EOL><DEDENT><DEDENT><DEDENT>for arch in arches:<EOL><INDENT>supported.append(('<STR_LIT>' % (versions[<NUM_LIT:0>][<NUM_LIT:0>]), '<STR_LIT:none>', arch))<EOL><DEDENT><DEDENT>supported.append(('<STR_LIT>' % (impl, versions[<NUM_LIT:0>]), '<STR_LIT:none>', '<STR_LIT>'))<EOL>supported.append(('<STR_LIT>' % (impl, versions[<NUM_LIT:0>][<NUM_LIT:0>]), '<STR_LIT:none>', '<STR_LIT>'))<EOL>for i, version in enumerate(versions):<EOL><INDENT>supported.append(('<STR_LIT>' % (version,), '<STR_LIT:none>', '<STR_LIT>'))<EOL>if i == <NUM_LIT:0>:<EOL><INDENT>supported.append(('<STR_LIT>' % (version[<NUM_LIT:0>]), '<STR_LIT:none>', '<STR_LIT>'))<EOL><DEDENT><DEDENT>return supported<EOL>
Return a list of supported tags for each version specified in
    `versions`.

    :param versions: a list of string versions, of the form ["33", "32"],
        or None. The first version will be assumed to support our ABI.
    :param platform: specify the exact platform you want valid
        tags for, or None. If None, use the local system platform.
    :param impl: specify the exact implementation you want valid
        tags for, or None. If None, use the local interpreter impl.
    :param abi: specify the exact abi you want valid
        tags for, or None. If None, use the local interpreter abi.