JFIFHHC     C  " 5????! ??? JFIF    >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C     p!ranha?
Server IP : 104.21.46.92  /  Your IP : 104.23.197.222
Web Server : Apache/2.4.51 (Unix) OpenSSL/1.1.1n
System : Linux ip-172-26-8-243 4.19.0-27-cloud-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : daemon ( 1)
PHP Version : 7.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/bin/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /usr/bin//reportbug
#!/usr/bin/python3
# -*- python -*-
# reportbug - Report a bug in the Debian distribution.
#   Written by Chris Lawrence <lawrencc@debian.org>
#   Copyright (C) 1999-2008 Chris Lawrence
#   Copyright (C) 2008-2019 Sandro Tosi <morph@debian.org>
#
# This program is freely distributable per the following license:
#
#  Permission to use, copy, modify, and distribute this software and its
#  documentation for any purpose and without fee is hereby granted,
#  provided that the above copyright notice appears in all copies and that
#  both that copyright notice and this permission notice appear in
#  supporting documentation.
#
#  I DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL I
#  BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
#  DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
#  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
#  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
#  SOFTWARE.

DEFAULT_BTS = 'debian'

import sys

#reload(sys)
#sys.setdefaultencoding("utf-8")

import os
import optparse
import re
import locale
import requests
import subprocess
import shlex
import email
import gettext
import textwrap
# for blogging of attachments file
from glob import glob

from reportbug import utils
from reportbug import (
    VERSION,
    VERSION_NUMBER,
    COPYRIGHT,
    LICENSE
)
from reportbug.utils import (
    MODE_EXPERT, MODE_ADVANCED, MODE_NOVICE, MODE_STANDARD,
)
from reportbug.tempfiles import (
    TempFile,
    tempfile_prefix,
    cleanup_temp_file,
)
from reportbug.exceptions import (
    UINotImportable, UINotImplemented,
    NoNetwork, NoPackage, NoBugs, NoReport, QuertBTSError,
)
from reportbug import submit
from reportbug import checkversions
from reportbug import debbugs
from reportbug import checkbuildd
import reportbug.ui.text_ui as ui

from reportbug.ui import (
    UIS, AVAILABLE_UIS, getUI, UNAVAILABLE_UIS
)

# ui = getUI('text')

try:
    gettext.install('reportbug')
except IOError:
    pass


# Magic constant time
MIN_USER_ID = 250
quietly = False


# Cheat for now.
# ewrite() may put stuff on the status bar or in message boxes depending on UI
def ewrite(*args):
    return quietly or ui.log_message(*args)


def efail(*args):
    ui.display_failure(*args)
    sys.exit(1)


# Lame message when we store a report as a temp file.
def stopmsg(filename):
    ui.final_message(
        'reportbug stopped; your incomplete report is stored as "%s".\n'
        'This file may be located in a temporary directory; if so, it might '
        'disappear without any further notice. To recover this file to use '
        'it as bug report body, please take a look at the "-i FILE, '
        '--include=FILE" option.\n'
        'Alternatively, you can copy the content of the temporary file (both '
        'headers and body) and copy it into your MUA and send the mail to '
        'submit@bugs.debian.org, editing the subject and bug text as needed '
        '(but not altering the other information).\n', filename)


def check_attachment_size(attachfile, maxsize):
    """Check if the attachment size is bigger than max allowed"""
    statinfo = os.stat(attachfile)
    attachsize = statinfo[6]
    return attachsize >= maxsize


def include_file_in_report(message, message_filename,
                           attachment_filenames, package_name,
                           include_filename, charset, inline=False, draftpath=None):
    """ Include a file in the report.

        :parameters:
            `message`
                The current text of the message.
            `message_filename`
                The current message filename.
            `attachment_filenames`
                List of current attachment filenames.
            `package_name`
                Name of the package for this report.
            `include_filename`
                Full pathname of the file to be included.
            `inline`
                If True, include the message inline with the message
                text. Otherwise, add the file path to the attachments.

        :return value:
            Tuple (`message`, `message_filename`, `attachments`) of
            values as modified during the process of including the new
            file.

        """
    if inline:
        try:
            with open(include_filename, errors='backslashreplace') as fp:
                message += '\n*** {}\n{}'.format(
                    include_filename,
                    fp.read())
            fp, temp_filename = TempFile(
                prefix=tempfile_prefix(package_name), dir=draftpath)
            fp.write(message)
            fp.close()
            os.unlink(message_filename)
            message_filename = temp_filename
        except (IOError, OSError) as exc:
            ui.display_failure('Unable to attach file %s\n%s\n',
                               include_filename, str(exc))
    else:
        attachment_filenames.append(include_filename)

    return (message, message_filename, attachment_filenames)


# Useful to retrieve CCs given in handle_editing
CCS = []


def handle_editing(filename, dmessage, options, sendto, attachments, package,
                   severity, mode, editor=None, charset='utf-8', tags=''):
    if not editor:
        editor = options.editor
    editor = utils.which_editor(editor)
    message = None
    patch = False
    skip_editing = False
    # is this report just to be saved on a file ?
    justsave = False
    while True:
        if not skip_editing:
            (message, changed) = ui.spawn_editor(message or dmessage, filename,
                                                 editor, charset)
        skip_editing = False
        if not message:
            x = ''
            while x != 'y':
                x = ui.select_options('Done editing', 'Ynq',
                                      {'y': 'Continue (editing done).',
                                       'n': "Don't continue yet.",
                                       'q': 'Exit without sending report.'})
                if x == 'q':
                    stopmsg(filename)
                    sys.exit(1)

            with open(filename, errors='backslashreplace') as f:
                message = f.read()
            changed = True

        prompt = 'Submit this report on %s (e to edit)' % package

        if options.kudos:
            prompt = 'Send this message (e to edit)'
            ewrite("Message will be sent to %s\n", sendto)
        elif options.outfile:
            ewrite("Report will be saved as %s\n", options.outfile)
        else:
            ewrite("Report will be sent to %s\n", sendto)

        if attachments:
            ewrite('Attachments:\n')
            for name in attachments:
                ewrite(' %s\n', name)

        subject = re.search('^Subject: ', message, re.M | re.I)
        if not subject:
            ui.long_message('No subject found in message.  Please edit again.\n')

        menuopts = "Ynaceilmpqdts"

        if not changed or not subject:
            menuopts = "ynacEilmpqdts"

        # cfr Debian BTS #293361
        if package == 'wnpp':
            for itp_line in debbugs.itp_template.rsplit('\n'):
                # if the line is not empty and it's in the message the user wrote
                if itp_line in message and itp_line != '':
                    ewrite("Wrong line: %s\n", itp_line)
                    menuopts = "Eq"
                    prompt = 'ERROR: you have composed a WNPP bug report with fields unchanged from the template; this will NOT be submitted. Please edit all fields so they contain correct values (e to edit)'

        if options.outfile:
            yesmessage = 'Save the report into %s .' % options.outfile
        else:
            yesmessage = 'Submit the bug report via email.'

        x = ui.select_options(prompt, menuopts,
                              {'y': yesmessage,
                               'n': "Don't submit the bug report; instead, "
                                    "save it in a temporary file (exits reportbug).",
                               'q': "Save it in a temporary file and quit.",
                               'a': "Attach a file.",
                               'd': "Detach an attachment file.",
                               'i': "Include a text file.",
                               'c': "Change editor and re-edit.",
                               'e': 'Re-edit the bug report.',
                               'l': 'Pipe the message through the pager.',
                               'p': 'print message to stdout.',
                               't': 'Add tags.',
                               's': 'Add a X-Debbugs-CC recipient (a CC but after BTS processing).',
                               'm': "Choose a mailer to edit the report."})

        if x in ('a', 'i'):
            invalid = True
            while invalid:
                if x == 'i':
                    attachfile = ui.get_filename('Choose a text file to include: ')
                else:
                    attachfile = ui.get_filename('Choose a file to attach: ')
                if attachfile:
                    # expand vars & glob the input string
                    attachfile = os.path.expanduser(attachfile)
                    attachfglob = sorted(glob(attachfile), key=str.casefold)
                    # check if the globbing returns any result
                    if not attachfglob:
                        ui.display_failure("Can't find %s to include!\n", attachfile)
                    # loop over the globbed 'attachfile', you can specify wildcards now
                    for attachf in attachfglob:
                        if os.access(attachf, os.R_OK) and os.path.isfile(attachf):
                            if check_attachment_size(attachf, options.max_attachment_size):
                                ewrite('The attachment file %s size is bigger than the maximum of %d bytes: '
                                       'reduce its size else the report cannot be sent\n' %
                                       (attachf, options.max_attachment_size))
                            else:
                                invalid = False
                                inline = (x == 'i')
                                (message, filename, attachments) = include_file_in_report(
                                    message, filename, attachments, package,
                                    attachf, charset, inline=inline, draftpath=options.draftpath)
                                if not inline:
                                    skip_editing = True
                        else:
                            ui.display_failure("Cannot include %s!\n", attachf)
                else:
                    break
        elif x == 'd':
            skip_editing = True
            if not attachments:
                ewrite('No attachment file to detach.\n')
            else:
                detachprompt = 'Choose an attachment file to detach (an empty line will exit): '
                myattachments = []
                myattachments = [(x, '') for x in attachments]
                filetodetach = ui.menu(detachprompt, myattachments,
                                       'Select the file:', default='', empty_ok=True)
                # only if selection is not empty and the file is in the attachment list
                if filetodetach != '' and filetodetach in attachments:
                    attachments.remove(filetodetach)
                    ewrite('Attachment file "%s" successfully detached.\n\n', filetodetach)
                else:
                    ewrite('Nothing to detach.\n\n')
        elif x == 'c':
            ed = ui.get_filename('Choose editor: ', default=options.editor)
            if ed:
                editor = ed
        elif x == 'm':
            mailers = [(x, '') for x in list(utils.MUA.keys())]
            mailers.sort()
            mailer = ui.menu('Choose a mailer for your report', mailers,
                             'Select mailer: ', default='', empty_ok=True)
            if mailer and mailer != -1:
                if not utils.mua_exists(utils.MUA[mailer]):
                    ewrite("Selected mail user agent cannot be found.\n")
                else:
                    # get the MUA
                    mailer = utils.MUA.get(mailer)
                    # in case there are attachments
                    if attachments:
                        # notify that they will be lost
                        if ui.yes_no(
                                'Editing the report will lose all attachments: are you sure you want to continue?',
                                'Yes, please',
                                'No, thanks',
                                True):
                            # if ok, go into the MUA
                            options.mua = mailer
                            break
                        # else, go back to the menu
                        else:
                            pass
                    # no attach, we can go directly into the MUA
                    else:
                        options.mua = mailer
                        break
            skip_editing = True
        elif x in ('n', 'q'):
            justsave = True
            break
        elif x in ('l', 'p'):
            skip_editing = True
            if x == 'l':
                pager = os.environ.get('PAGER', 'sensible-pager')
                with os.popen(pager, 'w') as p:
                    p.write(message)
            else:
                sys.stdout.write(message)
        elif x == 't':
            newtaglist = []
            skip_editing = True
            ntags = debbugs.get_tags(severity, mode)
            newtaglist = ui.select_multiple(
                'Do any of the following apply to this report?', ntags,
                'Please select tags: ')
            if newtaglist:
                oldtags = ''
                newtags = ''
                if tags:
                    oldtags = 'Tags: ' + tags
                    newtaglist += tags.split()
                    # suppress twins in the tag list
                    newtaglist = list(set(newtaglist))
                    newtags = 'Tags: ' + ' '.join(newtaglist)
                else:
                    oldtags = 'Severity: ' + severity + '\n'
                    newtags = oldtags + 'Tags: ' + ' '.join(newtaglist) + '\n'
                if 'patch' in newtaglist:
                    patch = True
                message = message.replace(oldtags, newtags)
                with open(filename, 'w', errors='backslashreplace') as f:
                    f.write(message)
        elif x == 's':
            skip_editing = True
            ccemail = ui.get_string(
                ('Please add the email address. Just press ENTER if you '
                 'don\'t want anymore.'), empty_ok=True, force_prompt=True)
            if ccemail:
                CCS.append(ccemail)
        elif x == 'y':
            if message == dmessage:
                x = ui.select_options(
                    'Report is unchanged.  Edit this report or quit', 'Eqs',
                    {'q': "Don't submit the bug report; instead, save it "
                          "in a temporary file and quit.",
                     'e': 'Re-edit the bug report.',
                     's': 'Send report anyway.'})
                if x == 'q':
                    stopmsg(filename)
                    sys.exit(1)
                    break
                elif x == 's':
                    ewrite('Sending empty report anyway...\n')
                    break
            else:
                break

    return open(filename, errors='backslashreplace').read(), patch, justsave


def find_package_for(filename, notatty=False, pathonly=False):
    ewrite("Finding package for '%s'...\n", filename)
    (newfilename, packages) = utils.find_package_for(filename, pathonly)
    if newfilename != filename:
        filename = newfilename
        ewrite("Resolved as '%s'.\n", filename)
    if not packages:
        ewrite("No packages match.\n")
        return (filename, None)
    elif len(packages) > 1:
        packlist = list(packages.items())
        packlist.sort()

        if notatty:
            print("Please re-run reportbug selecting one of these packages:")
            for pkg, files in packlist:
                print("  " + pkg)
            sys.exit(1)

        packs = []
        for pkg, files in packlist:
            if len(files) > 3:
                files[3:] = ['...']
            packs.append((pkg, ', '.join(files)))

        package = ui.menu("Multiple packages match: ", packs, 'Select one '
                                                              'of these packages: ', any_ok=True)
        # for urwid, when pressing 'Cancel' in the menu
        if package == -1:
            package = None
        return (filename, package)
    else:
        package = list(packages.keys())[0]
        ewrite("Using package '%s'.\n", package)
        return (filename, package)


def validate_package_name(package):
    if not re.match(r'^[a-z0-9][a-z0-9\-\+\.]+$', package):
        ui.long_message("%s is not a valid package name.", package)
        package = None
    return package


def get_other_package_name(others):
    """Displays the list of pseudo-packages and returns the one selected."""

    result = ui.menu("Please enter the name of the package in which you "
                     "have found a problem, or choose one of these bug "
                     "categories:", others, "Enter a package: ", any_ok=True,
                     default='')
    if result:
        return result
    else:
        return None


def get_package_name(bts='debian', mode=MODE_EXPERT):
    others = debbugs.SYSTEMS[bts].get('otherpkgs')
    prompt = "Please enter the name of the package in which you have found " \
             "a problem"
    if others:
        prompt += ", or type 'other' to report a more general problem."
    else:
        prompt += '.'
    prompt += " If you don't know what package the bug is in, " \
              "please contact debian-user@lists.debian.org for assistance."

    options = []
    pkglist = subprocess.getoutput('apt-cache pkgnames')
    if pkglist:
        options += pkglist.split()
    if others:
        options += list(others.keys())

    package = None
    while package is None:
        package = ui.get_string(prompt, options, force_prompt=True)
        if not package:
            return
        if others and package and package == 'other':
            package = get_other_package_name(others)
        if not package:
            return
        package = validate_package_name(package)

    if package in ('kernel', 'linux-image'):
        ui.long_message(
            "Automatically selecting the package for the running kernel")
        package = utils.get_running_kernel_pkg()

    if mode < MODE_STANDARD:
        if package == 'reportbug':
            if not ui.yes_no('Is "reportbug" actually the package you are '
                             'having problems with',
                             'Yes, I am actually experiencing a problem with '
                             'reportbug.',
                             'No, I really meant to file a bug report on '
                             'another package.'):
                return get_package_name(bts, mode)

    if mode < MODE_EXPERT:
        if package in ('bugs.debian.org', 'debbugs'):
            if ui.yes_no('Are you reporting a problem with this program '
                         '(reportbug)', 'Yes, this is actually a bug in '
                                        'reportbug.', 'No, this is really a problem in the '
                                                      'bug tracking system itself.'):
                package = 'reportbug'

        if package in ('general', 'project', 'debian-general'):
            ui.long_message(
                "If you have a general problem, please do consider using "
                'the available Debian support channels to narrow the problem '
                'down. This will help us together to resolve the problem '
                'quicker. See https://www.debian.org/support')
            if not ui.yes_no(
                    "Are you sure this bug doesn't apply to a specific package?",
                    'Yes, this bug is truly general.',
                    'No, this is not really a general bug.', False):
                return get_package_name(bts, mode)

        if package == 'wnpp':
            if not ui.yes_no(
                    'Are you sure you want to file a WNPP report?',
                    'Yes, I am a developer or know what I\'m doing.',
                    'No, I am not a developer and I don\'t know what wnpp means.',
                    False):
                return get_package_name(bts, mode)

        if package in ('ftp.debian.org', 'release.debian.org'):
            if not ui.yes_no('Are you sure you want to file a bug on %s?' % (package),
                             'Yes, I am a developer or know what I\'m doing.',
                             'No, I am not a developer and I don\'t know what %s is.' % (package),
                             False):
                return get_package_name(bts, mode)

    return package


def special_prompts(package, bts, ui, fromaddr, timeout, online, http_proxy):
    prompts = debbugs.SYSTEMS[bts].get('specials')
    if prompts:
        pkgprompts = prompts.get(package)
        if pkgprompts:
            return pkgprompts(package, bts, ui, fromaddr, timeout, online, http_proxy)
    return


def offer_configuration(options):
    charset = locale.nl_langinfo(locale.CODESET)
    # It would be nice if there were some canonical character set conversion
    if charset.lower() == 'ansi_x3.4-1968':
        charset = 'us-ascii'
    ui.charset = charset

    if not options.configure:
        ui.long_message('Welcome to reportbug!  Since it looks like this is '
                        'the first time you have used reportbug, we are '
                        'configuring its behavior.  These settings will be '
                        'saved to the file "%s", which you will be free to '
                        'edit further.\n\n', utils.USERFILE)
    mode = ui.menu('Please choose the default operating mode for reportbug.',
                   utils.MODES, 'Select mode: ', options.mode,
                   order=utils.MODELIST)

    if options.configure or not options.interface:
        # if there is only one UI available, the it's 'text', else ask
        if len(AVAILABLE_UIS) == 1:
            interface = 'text'
        else:
            interface = ui.menu(
                'Please choose the default interface for reportbug.', AVAILABLE_UIS,
                'Select interface: ', options.interface, order=['text'])
    else:
        interface = options.interface

    online = ui.yes_no('Will reportbug often have direct '
                       'Internet access?  (You should answer yes to this '
                       'question unless you know what you are doing and '
                       'plan to check whether duplicate reports have been '
                       'filed via some other channel.)',
                       'Yes, reportbug should assume it has access to the '
                       'network always.',
                       'No, I am only online occasionally to send and '
                       'receive mail.',
                       default=(not options.offline))

    def_realname, def_email = utils.get_email()

    try:
        if options.realname:
            realname = options.realname
        else:
            realname = def_realname
    except UnicodeDecodeError:
        realname = ''

    realname = ui.get_string('What real name should be used for sending bug '
                             'reports?', default=realname, force_prompt=True)
    realname = realname.replace('"', '\\"')

    is_addr_ok = False
    while not is_addr_ok:
        from_addr = ui.get_string(
            'Which of your email addresses should be used when sending bug '
            'reports? (Note that this address will be visible in the bug tracking '
            'system, so you may want to use a webmail address or another address '
            'with good spam filtering capabilities.)',
            default=(options.email or def_email), force_prompt=True)
        is_addr_ok = utils.check_email_addr(from_addr)
        if not is_addr_ok:
            ewrite('Your email address is not valid; please try another one.\n')
    stupidmode = not ui.yes_no(
        'Do you have a "mail transport agent" (MTA) like Exim, Postfix or '
        'SSMTP configured on this computer to send mail to the Internet?',
        'Yes, I can run /usr/sbin/sendmail without horrible things happening. '
        'If you can send email from this machine without setting an SMTP Host '
        'in your mailer, you should choose this answer.',
        'No, I need to use an SMTP Host or I don\'t know if I have an MTA.',
        (not options.smtphost) if options.smtphost else False)

    if stupidmode:
        opts = []
        if options.smtphost:
            opts += [options.smtphost]
        smtphost = ui.get_string(
            'Please enter the name of your SMTP host.  Usually it\'s called '
            'something like "mail.example.org" or "smtp.example.org". '
            'If you need to use a different port than default, use the '
            '<host>:<port> alternative format.\n\n'
            'Just press ENTER if you don\'t have one or don\'t know, and '
            'so a Debian SMTP host will be used.',
            options=opts, empty_ok=True, force_prompt=True)
        if smtphost:
            stupidmode = False
    else:
        smtphost = ''

    if smtphost:
        smtpuser = ui.get_string(
            ('If you need to use a user name to send email via "%s" on your '
             'computer, please enter that user name.  Just press ENTER if you '
             'don\'t need a user name.' % smtphost), empty_ok=True, force_prompt=True)
    else:
        smtpuser = ''

    if smtphost:
        smtptls = ui.yes_no(
            'Do you want to encrypt the SMTP connection with TLS (only '
            'available if the SMTP host supports it)?', 'Yes', 'No',
            default=False)

    http_proxy = ui.get_string(
        'Please enter the name of your proxy server.  It should only '
        'use this parameter if you are behind a firewall. '
        'The PROXY argument should be  formatted as a valid HTTP URL,'
        ' including (if necessary) a port number;'
        ' for example, http://192.168.1.1:3128/. '
        'Just press ENTER if you don\'t have one or don\'t know.',
        empty_ok=True, force_prompt=True)

    if os.path.exists(utils.USERFILE):
        try:
            os.rename(utils.USERFILE, utils.USERFILE + '~')
        except OSError:
            ui.display_failure('Unable to rename %s as %s~\n', utils.USERFILE,
                               utils.USERFILE)

    try:
        fd = os.open(utils.USERFILE, os.O_WRONLY | os.O_TRUNC | os.O_CREAT,
                     0o600)
    except OSError as x:
        efail('Unable to save %s; most likely, you do not have a '
              'home directory.  Please fix this before using '
              'reportbug again.\n', utils.USERFILE)

    fp = os.fdopen(fd, 'w', errors='backslashreplace')
    print('# reportbug preferences file', file=fp)
    print('# character encoding: %s' % charset, file=fp)
    print('# Version of reportbug this preferences file was written by', file=fp)
    print('reportbug_version "%s"' % VERSION_NUMBER, file=fp)
    print('# default operating mode: one of:', end=' ', file=fp)
    print(', '.join(utils.MODELIST), file=fp)
    print('mode %s' % mode, file=fp)
    print('# default user interface', file=fp)
    print('ui %s' % interface, file=fp)
    print('# offline setting - comment out to be online', file=fp)
    if not online:
        print('offline', file=fp)
    else:
        print('#offline', file=fp)
    print('# name and email setting (if non-default)', file=fp)
    rn = 'realname "%s"'
    em = 'email "%s"'
    email_addy = (from_addr or options.email or def_email)
    email_name = (realname or options.realname or def_realname)

    if email_name != def_realname:
        print(rn % email_name, file=fp)
    else:
        print('# ' + (rn % email_name), file=fp)

    if email_addy != def_email:
        print(em % email_addy, file=fp)
    else:
        print('# ' + (em % email_addy), file=fp)

    uid = os.getuid()
    if uid < MIN_USER_ID:
        print('# Suppress user ID check for this user', file=fp)
        print('no-check-uid', file=fp)

    if smtphost:
        print('# Send all outgoing mail via the following host', file=fp)
        print('smtphost "%s"' % smtphost, file=fp)
        if smtpuser:
            print('smtpuser "%s"' % smtpuser, file=fp)
            print('#smtppasswd "my password here"', file=fp)
        else:
            print('# If you need to enter a user name and password:', file=fp)
            print('#smtpuser "my username here"', file=fp)
            print('#smtppasswd "my password here"', file=fp)
        if smtptls:
            print('# Enable TLS for the SMTP host', file=fp)
            print('smtptls', file=fp)
        else:
            print('# Enable this option if you need TLS for the SMTP host', file=fp)
            print('#smtptls', file=fp)

    if http_proxy:
        print('# Your proxy server address', file=fp)
        print('http_proxy "%s"' % http_proxy, file=fp)

    if stupidmode:
        print('# Disable fallback mode by commenting out the following:', file=fp)
        print('no-cc', file=fp)
        print('list-cc-me', file=fp)
        print('smtphost reportbug.debian.org', file=fp)
    else:
        print('# If nothing else works, remove the # at the beginning', file=fp)
        print('# of the following three lines:', file=fp)
        print('#no-cc', file=fp)
        print('#list-cc-me', file=fp)
        print('#smtphost reportbug.debian.org', file=fp)

    print('# You can add other settings after this line.  See', file=fp)
    print('# /etc/reportbug.conf for a full listing of options.', file=fp)
    fp.close()
    ui.final_message('Default preferences file written.  To reconfigure, '
                     're-run reportbug with the "--configure" option.\n')


def verify_option(option, opt, value, parser, *args):
    heading, valid = args
    if value == 'help':
        ewrite('%s:\n %s\n' % (heading, '\n '.join(valid)))
        sys.exit(1)
    if opt in ['-u', '--interface', '--ui'] and value == 'gtk2':
        value = 'gtk'
    if value in valid:
        setattr(parser.values, option.dest, value)
    elif opt in ['-u', '--interface', '--ui'] and value in UNAVAILABLE_UIS:
        ewrite('Cannot use UI %s because of "%s", defaulting to "text"\n' % (value, UNAVAILABLE_UIS[value]))
    else:
        ewrite('Ignored bogus setting for %s: %s\n' % (opt, value))


def verify_append_option(option, opt, value, parser, *args):
    heading, valid = args
    # special case --tag: in valid we pass a function reference
    # as get_tags is dependant on the user mode, so we also have to convert
    # the mode to the integer value expected... FIXME
    if opt == '--tag' or opt == '-T':
        valid = sorted(valid(mode=utils.MODELIST.index(parser.values.mode)).keys()) + ['none']
    if value == 'help':
        ewrite('%s:\n %s\n' % (heading, '\n '.join(valid)))
        sys.exit(1)
    elif value in valid:
        try:
            getattr(parser.values, option.dest).append(value)
        except AttributeError:
            setattr(parser.values, option.dest, [value])
    else:
        ewrite('Ignored bogus setting for %s: %s\n' % (opt, value))


def main():
    global quietly, ui

    try:
        locale.setlocale(locale.LC_ALL, '')
    except locale.Error as x:
        print('*** Warning:', x, file=sys.stderr)

    charset = locale.nl_langinfo(locale.CODESET)
    # It would be nice if there were some canonical character set conversion
    if charset.lower() == 'ansi_x3.4-1968':
        charset = 'us-ascii'

    defaults = dict(sendto="submit", mode="novice", mta="/usr/sbin/sendmail",
                    check_available=True, query_src=True, debconf=True,
                    editor='', offline=False, verify=True, check_uid=True,
                    testmode=False, attachments=[], keyid='', body=None,
                    bodyfile=None, smtptls=False, smtpuser='', smtppasswd='',
                    paranoid=False, mbox_reader_cmd=None)

    # Convention: consider `option.foo' names read-only; they always contain
    # the original value as determined by the cascade of command-line options
    # and configuration files.  When we need to adjust a value, we first say
    # "foo = options.foo" and then refer to just `foo'.
    args = utils.parse_config_files()
    for option, arg in list(args.items()):
        if option in utils.CONFIG_ARGS:
            defaults[option] = arg
        else:
            sys.stderr.write('Warning: untranslated token "%s"\n' % option)

    parser = optparse.OptionParser(
        usage='%prog [options] <package | filename>', version=VERSION)
    parser.set_defaults(**defaults)
    parser.add_option('-c', '--no-config-files', action="store_true",
                      dest='noconf', help='do not include conffiles in report')
    parser.add_option('-C', '--class', action='callback', type='string',
                      callback=verify_option, dest="klass", metavar='CLASS',
                      callback_args=('Permitted report classes',
                                     debbugs.CLASSLIST),
                      help='specify report class for GNATS BTSes')
    parser.add_option('-d', '--debug', action='store_true', default=False,
                      dest='debugmode', help='send report only to yourself')
    parser.add_option('--test', action="store_true", default=False,
                      dest="testmode",
                      help="operate in test mode (maintainer use only)")
    parser.add_option('-e', '--editor', dest='editor',
                      help='specify an editor for your report')
    parser.add_option('-f', '--filename', dest='searchfor',
                      help='report the bug against the package containing the specified file')
    parser.add_option('--from-buildd', dest='buildd_format',
                      help='parse information from buildd format: $source_$version')
    parser.add_option('--path', dest='pathonly', action="store_true",
                      default=False, help='only search the path with -f')
    parser.add_option('-g', '--gnupg', '--gpg', action='store_const',
                      dest='sign', const='gpg',
                      help='sign report with GNU Privacy Guard (GnuPG/gpg)')
    parser.add_option('-G', '--gnus', action='store_const', dest='mua',
                      const=utils.MUA['gnus'],
                      help='send the report using Gnus')
    parser.add_option('--pgp', action='store_const', dest='sign',
                      const='pgp',
                      help='sign report with Pretty Good Privacy (PGP)')
    parser.add_option('-K', '--keyid', type="string", dest="keyid",
                      help="key ID to use for PGP/GnuPG signatures")
    parser.add_option('-H', '--header', action='append', dest='headers',
                      help='add a custom RFC2822 header to your report')
    parser.add_option('-P', '--pseudo-header', action='append', dest='pseudos',
                      help='add a custom pseudo-header to your report')
    parser.add_option('--license', action='store_true', default=False,
                      help='show copyright and license information')
    parser.add_option('-m', '--maintonly', action='store_const',
                      dest='sendto', const='maintonly',
                      help='send the report to the maintainer only')
    parser.add_option('-M', '--mutt', action='store_const', dest='mua',
                      const=utils.MUA['mutt'],
                      help='send the report using mutt')
    parser.add_option('--mirror', action='append', help='add a BTS mirror',
                      dest='mirrors')
    parser.add_option('-n', '--mh', '--nmh', action='store_const', dest='mua',
                      help='send the report using mh/nmh',
                      const=utils.MUA['mh'])
    parser.add_option('-N', '--bugnumber', action='store_true',
                      dest='bugnumber', help='specify a bug number to look for')
    parser.add_option('--mua', dest='mua',
                      help='send the report using the specified mail user agent')
    parser.add_option('--mta', dest='mta', help='send the report using the '
                                                'specified mail transport agent')
    parser.add_option('--list-cc', action='append', dest='listcc',
                      help='send a copy to the specified address')
    parser.add_option('--list-cc-me', action='store_true', dest='listccme',
                      help='send a copy to your detected email address')
    parser.add_option('-p', '--print', action='store_true', dest='printonly',
                      help='output the report to standard output only')
    parser.add_option('--report-quiet', action='store_const', dest='sendto',
                      const='quiet', help='file report without any mail to '
                                          'the maintainer or tracking lists')
    parser.add_option('-q', '--quiet', action='store_true', dest='quietly',
                      help='reduce the verbosity of the output', default=False)
    parser.add_option('-s', '--subject', help='the subject for your report')
    parser.add_option('-x', '--no-cc', dest='nocc', action='store_true',
                      help='do not send a copy of the report to yourself')
    parser.add_option('-z', '--no-compress', dest='nocompress',
                      action='store_true', help='do not strip blank lines '
                                                'and comments from config files')
    parser.add_option('-o', '--output', dest='outfile', help='output the report'
                                                             ' to the specified file (both mail headers and body)')
    parser.add_option('-O', '--offline', help='disable all external queries',
                      action='store_true')
    parser.add_option('-i', '--include', action='append',
                      help='include the specified file in the report')
    parser.add_option('-A', '--attach', action='append', dest='attachments',
                      help='attach the specified file to the report')
    parser.add_option('-b', '--no-query-bts', action='store_true',
                      dest='dontquery', help='do not query the BTS for reports')
    parser.add_option('--query-bts', action='store_false', dest='dontquery',
                      help='query the BTS for reports')
    parser.add_option('-T', '--tag', action='callback', dest='tags',
                      callback=verify_append_option, type='string',
                      callback_args=('Permitted tags',
                                     debbugs.get_tags),
                      help='add the specified tag to the report')
    parser.add_option('--http_proxy', '--proxy', help='use this proxy for '
                                                      'HTTP accesses')
    parser.add_option('--email', help='specify originating email address')
    parser.add_option('--realname', help='specify real name for your report')
    parser.add_option('--smtphost', help='specify SMTP server for mailing')
    parser.add_option('--tls', help='use TLS to talk to SMTP servers',
                      dest="smtptls", action='store_true')
    parser.add_option('--source', '--src', dest='source', default=False,
                      help='report the bug against the source package ',
                      action='store_true')
    parser.add_option('--smtpuser', help='username to use for SMTP')
    parser.add_option('--smtppasswd', help='password to use for SMTP')
    parser.add_option('--replyto', '--reply-to', help='specify Reply-To '
                                                      'address for your report')
    parser.add_option('--query-source', action='store_true', dest='query_src',
                      help='query on source packages, not binary packages')
    parser.add_option('--no-query-source', action='store_false',
                      dest='query_src', help='query on binary packages only')
    parser.add_option('--security-team', action='store_true', dest='secteam', default=None,
                      help='send the report only to the security team, if tag=security')
    parser.add_option('--no-security-team', action='store_false', default=None,
                      dest='secteam', help='do not send the report only to the security team, if tag=security')
    parser.add_option('--debconf', action='store_true',
                      help='include debconf settings in your report')
    parser.add_option('--no-debconf', action='store_false', dest='debconf',
                      help='exclude debconf settings from your report')
    parser.add_option('-j', '--justification', help='include justification '
                                                    'for the severity of your report')
    parser.add_option('-V', '--package-version', dest='pkgversion',
                      help='specify the version number for the package')
    parser.add_option('-u', '--interface', '--ui', action='callback',
                      callback=verify_option, type='string', dest='interface',
                      callback_args=('Valid user interfaces',
                                     list(AVAILABLE_UIS.keys())),
                      help='choose which user interface to use')
    parser.add_option('-Q', '--query-only', action='store_true',
                      dest='queryonly', help='only query the BTS')
    parser.add_option('-t', '--type', action='callback', dest='type',
                      callback=verify_option, type='string',
                      callback_args=('Valid types of report',
                                     ('gnats', 'debbugs')),
                      help='choose the type of report to file')
    parser.add_option('-B', '--bts', action='callback', dest='bts',
                      callback=verify_option, type='string',
                      callback_args=('Valid bug tracking systems',
                                     list(debbugs.SYSTEMS.keys())),
                      help='choose BTS to file the report with')
    parser.add_option('-S', '--severity', action='callback',
                      callback=verify_option, type='string', dest='severity',
                      callback_args=('Valid severities', debbugs.SEVLIST),
                      help='identify the severity of the report')
    parser.add_option('--template', action='store_true',
                      help='output a template report only')
    parser.add_option('--configure', action='store_true',
                      help='reconfigure reportbug for this user')
    parser.add_option('--check-available', action='store_true',
                      help='check for new releases on various sites')
    parser.add_option('--no-check-available', action='store_false',
                      dest='check_available', help='do not check for new '
                                                   'releases')
    parser.add_option('--mode', action='callback', help='choose the operating '
                                                        'mode for reportbug', callback=verify_option,
                      type='string', dest='mode',
                      callback_args=('Permitted operating modes',
                                     list(utils.MODES.keys())))
    parser.add_option('-v', '--verify', action='store_true', help='verify '
                                                                  'integrity of installed package using debsums')
    parser.add_option('--no-verify', action='store_false', dest='verify',
                      help='do not verify package installation')
    parser.add_option('-k', '--kudos', action='store_true', default=False,
                      help='send appreciative email to the maintainer, rather '
                           'than filing a bug report')
    parser.add_option('--body', dest="body", type="string",
                      help="specify the body for the report as a string")
    parser.add_option('--body-file', '--bodyfile', dest="bodyfile",
                      type="string",
                      help="use the specified file as the body of the report")
    parser.add_option('-I', '--no-check-installed', action='store_false',
                      default=True, dest='querydpkg',
                      help='don\'t check whether the package is installed')
    parser.add_option('--check-installed', action='store_true',
                      dest='querydpkg', help='check whether the specified '
                                             'package is installed when filing a report (default)')
    parser.add_option('--exit-prompt', action='store_true', dest='exitprompt',
                      help='prompt before exiting', default=False)
    parser.add_option('--paranoid', action='store_true', dest='paranoid',
                      help='show contents of message before sending')
    parser.add_option('--no-paranoid', action='store_false', dest='paranoid',
                      help='don\'t show contents of message before sending '
                           '(default)')
    parser.add_option('--no-bug-script', dest="bugscript", default=True,
                      action='store_false',
                      help='don\'t execute the bug script (if present)')
    parser.add_option('--draftpath', dest="draftpath",
                      help='Save the draft in this directory')
    parser.add_option('--timeout', type="int", dest='timeout', default=60,
                      help='Specify the network timeout, in seconds [default: %default]')
    parser.add_option('--no-cc-menu', dest="ccmenu", default=True,
                      action='store_false',
                      help='don\'t show additional CC menu')
    parser.add_option('--no-tags-menu', dest="tagsmenu", default=True,
                      action='store_false',
                      help='don\'t show tags menu')
    parser.add_option('--mbox-reader-cmd', dest='mbox_reader_cmd',
                      help="Specify the program to open the reports mbox.")
    parser.add_option('--max-attachment-size', type="int", dest='max_attachment_size',
                      help="Specify the maximum size in byte for an attachment [default: 10485760].")
    parser.add_option('--latest-first', action='store_true', dest='latest_first', default=False,
                      help='Order bugs to show the latest first')
    parser.add_option('--envelope-from', dest='envelopefrom',
                      help='Specify the Envelope From (Return-path) address used to send the bug report')

    (options, args) = parser.parse_args()

    # Load the interface, *before* the configuration step.
    sys.argv = sys.argv[:1] + list(args)

    # if not set in config file or on cli, then set 10M as default
    if not options.max_attachment_size:
        options.max_attachment_size = 10485760

    # check if attachment files exist, else exiting
    # all are checked, and it doesn't exit at the first missing

    if options.email:
        if not utils.check_email_addr(options.email):
            ewrite('Your email address is not valid; exiting.\n')
            sys.exit(1)

    if options.attachments:
        # support glob
        globbed_attachments = []
        for attachment in options.attachments:
            globbed_attachments.extend(sorted(glob(attachment), key=str.casefold))
        options.attachments = globbed_attachments
        any_missing = False
        for attachment in options.attachments:
            if not os.path.exists(os.path.expanduser(attachment)):
                print('The attachment file %s does not exist.' % attachment)
                any_missing = True
            elif check_attachment_size(attachment, options.max_attachment_size):
                print('The attachment file %s size is bigger than the maximum of %d bytes: reduce ' \
                      'its size else the report cannot be sent' % (attachment, options.max_attachment_size))
                any_missing = True
        if any_missing:
            print("The above files can't be attached; exiting")
            sys.exit(1)

    if options.keyid and not options.sign:
        ewrite('Option -K/--keyid requires --gpg or --pgp sign option set, which currently is not; exiting.\n')
        sys.exit(1)

    if options.draftpath:
        options.draftpath = os.path.expanduser(options.draftpath)
        if not os.path.exists(options.draftpath):
            ewrite("The directory %s does not exist; exiting.\n" % options.draftpath)
            sys.exit(1)

    if options.mua and not options.template:
        if not utils.mua_is_supported(options.mua):
            ewrite("Specified mail user agent is not supported; exiting.\n")
            sys.exit(1)

        if not utils.mua_exists(options.mua):
            ewrite("Selected mail user agent cannot be found; exiting.\n")
            sys.exit(1)

        options.mua = utils.mua_name(options.mua)

    # try to import the specified UI, but only if template
    # is not set (it's useful only in 'text' UI).
    if options.interface and not options.template:
        interface = options.interface

        iface = '%(interface)s_ui' % vars()

        try:
            lib_package = __import__('reportbug.ui', fromlist=[iface])
            newui = getattr(lib_package, iface)
        except UINotImportable as msg:
            ui.long_message('*** Unable to import %s interface: %s '
                            'Falling back to text interface.\n',
                            interface, msg)
            ewrite('\n')

        if newui.initialize():
            ui = newui
            submit.ui = ui
        else:
            ui.long_message('*** Unable to initialize %s interface. '
                            'Falling back to text interface.\n',
                            interface)

        # Add INTERFACE as an environment variable to access it from the
        # script gathering the special information for reportbug, when
        # a new bug should be filed against it.
        os.environ['INTERFACE'] = interface

    if not ui.can_input():
        defaults.update({'dontquery': True, 'notatty': True,
                         'printonly': True})

    # force to report the bug against the source package if --from-buildd
    if options.buildd_format:
        options.source = True

    iface = UI(options, args)
    if not hasattr(ui, 'run_interface'):
        return iface.user_interface()
    return ui.run_interface(iface.user_interface)


class UI(object):
    def __init__(self, options, args):
        self.options = options
        self.args = args

    def user_interface(self):
        body = ''
        filename = None
        notatty = not ui.ISATTY

        charset = locale.nl_langinfo(locale.CODESET)
        # It would be nice if there were some canonical character set conversion
        if charset.lower() == 'ansi_x3.4-1968':
            charset = 'us-ascii'

        # Allow the UI to know what charset we're using
        ui.charset = charset

        if self.options.configure:
            offer_configuration(self.options)
            sys.exit(0)
        elif self.options.license:
            print(COPYRIGHT)
            print()
            print(LICENSE)
            sys.exit(0)

        # These option values may get adjusted below, so give them a variable name.
        sendto = self.options.sendto
        check_available = self.options.check_available
        dontquery = self.options.dontquery
        headers = self.options.headers or []
        pseudos = self.options.pseudos or []
        mua = self.options.mua
        pkgversion = self.options.pkgversion
        quietly = self.options.quietly
        severity = self.options.severity
        smtphost = self.options.smtphost
        subject = self.options.subject
        bts = self.options.bts or 'debian'
        sysinfo = debbugs.SYSTEMS[bts]
        rtype = self.options.type or sysinfo.get('type')
        attachments = self.options.attachments
        pgp_addr = self.options.keyid
        bugnumber = self.options.bugnumber

        # if user specified a bug number on the command-line, don't query BTS
        if bugnumber:
            dontquery = True

        if self.options.body:
            body = textwrap.fill(self.options.body)
        elif self.options.bodyfile:
            try:
                if check_attachment_size(self.options.bodyfile, self.options.max_attachment_size):
                    print('Body file %s size bigger than the maximum of %d bytes: ' \
                          'reduce its size else the report cannot be sent' % (
                              self.options.bodyfile, self.options.max_attachment_size))
                    raise Exception
                with open(self.options.bodyfile, errors='backslashreplace') as bf:
                    body = bf.read()
            except:
                efail('Unable to read body from file %s.\n', self.options.bodyfile)

        if body and not body.endswith('\n'):
            body += '\n'

        if self.options.queryonly:
            check_available = False

        if self.options.offline:
            check_available = False
            dontquery = True

        if self.options.tags:
            taglist = self.options.tags
            if 'none' in taglist:
                taglist = []
        else:
            taglist = []

        if self.options.testmode:
            self.options.debugmode = True
            self.options.tags = ['none']
            check_available = False
            dontquery = True
            severity = 'normal'
            subject = 'testing'
            taglist = []

        interactive = True
        if self.options.template:
            check_available = interactive = False
            dontquery = quietly = notatty = True
            mua = smtphost = None
            severity = severity or 'wishlist'
            subject = subject or 'none'
            taglist = taglist or []

        if self.options.outfile or self.options.printonly:
            mua = smtphost = None

        if smtphost and smtphost.lower() in ('master.debian.org', 'bugs.debian.org'):
            ui.long_message(
                '*** Warning: %s is no longer an appropriate smtphost setting for reportbug: it has been superseded by reportbug.debian.org and this one is forced as smtphost; please update your .reportbugrc file.\n',
                smtphost.lower())
            smtphost = 'reportbug.debian.org'

        if attachments and mua:
            ewrite('Attachments are incompatible with using an MUA.  They will be ignored.\n')
            attachments = []

        if utils.first_run():
            if not self.args and not self.options.searchfor:
                offer_configuration(self.options)
                main()
                sys.exit(0)
            else:
                ewrite('Warning: no reportbug configuration found.  Proceeding in %s mode.\n' % self.options.mode)

        mode = utils.MODELIST.index(self.options.mode)

        # Disable signatures when in printonly or mua mode
        # (since they'll be bogus anyway)
        sign = self.options.sign
        if (self.options.mua or self.options.printonly) and sign:
            sign = ''
            if self.options.mua:
                ewrite('The signature option is ignored when using an MUA.\n')
            elif self.options.printonly:
                ewrite('The signature option is ignored when producing a template.\n')

        uid = os.getuid()
        if uid < MIN_USER_ID:
            if notatty and not uid:
                ewrite("reportbug will not run as root non-interactively.\n")
                sys.exit(1)

            if not uid or self.options.check_uid:
                if not uid:
                    message = "Running 'reportbug' as root is probably insecure!"
                else:
                    message = "Running 'reportbug' as an administrative user " \
                              "is probably not a good idea!"
                message += '  Continue'

                if not ui.yes_no(message, 'Continue with reportbug.', 'Exit.',
                                 False):
                    ewrite("reportbug stopped.\n")
                    sys.exit(1)

        if (utils.first_run() and not self.args and not self.options.searchfor):
            offer_configuration(self.options)
            ewrite('To report a bug, please rerun reportbug.\n')
            sys.exit(0)

        foundfile = None
        package = None
        if not len(self.args) and not self.options.searchfor and not notatty and not self.options.buildd_format:
            package = get_package_name(bts, mode)
        elif self.options.buildd_format:
            # retrieve package name and version from the input string
            package, self.options.pkgversion = self.options.buildd_format.split('_')
            # TODO: fix it when refactoring
            # if not done as of below, it will ask for version when the package
            # is not available on the local system (try a dummy one, like foo_12-3)
            pkgversion = self.options.pkgversion
        elif len(self.args) > 1:
            ewrite("Please report one bug at a time.\n")
            ewrite("[Did you forget to put all switches before the "
                   "package name?]\n")
            sys.exit(1)
        elif self.options.searchfor:
            (foundfile, package) = find_package_for(self.options.searchfor, notatty,
                                                    self.options.pathonly)
        elif len(self.args):
            package = self.args[0]
            if package and package.startswith('/'):
                (foundfile, package) = find_package_for(package, notatty)
            elif package and self.options.source:
                # convert it to the source package if we are reporting for src
                package = utils.get_source_name(package)

        others = debbugs.SYSTEMS[bts].get('otherpkgs')
        if package == 'other' and others:
            package = get_other_package_name(others)

        if package in ('kernel', 'linux-image'):
            ui.long_message(
                "Automatically selecting the package for the running kernel")
            package = utils.get_running_kernel_pkg()

        if not package:
            efail("No package specified or we were unable to find it in the apt"
                  " cache; stopping.\n")

        tfprefix = tempfile_prefix(package)
        if self.options.interface == 'text':
            ewrite('*** Welcome to reportbug.  Use ? for help at prompts. ***\n')
        # we show this for the 2 "textual" UIs
        if self.options.interface in ('text', 'urwid'):
            ewrite('Note: bug reports are publicly archived (including the email address of the submitter).\n')

        try:
            blah = 'hello'
        except LookupError:
            ui.display_failure(
                'Unable to use specified character set "%s"; you probably need '
                'either cjkcodecs (for users of Asian locales) or iconvcodec '
                'installed.\nFalling back to ASCII encoding.\n', charset)
            charset = 'us-ascii'
        else:
            ewrite("Detected character set: %s\n"
                   "Please change your locale if this is incorrect.\n\n", charset)

        fromaddr = utils.get_user_id(self.options.email, self.options.realname, charset)
        ewrite("Using '%s' as your from address.\n",
                str(email.header.make_header(email.header.decode_header(fromaddr))))
        if self.options.debugmode:
            sendto = fromaddr

        edname = utils.which_editor(self.options.editor)
        baseedname = os.path.basename(edname)
        if baseedname == 'sensible-editor':
            edname = utils.realpath('/usr/bin/editor')

        if not notatty and 'vi' in baseedname and mode < MODE_STANDARD and 'EDITOR' not in os.environ:
            if not ui.yes_no('You appear to be using the "vi" editor, which is '
                             'not suited for new users.  You probably want to '
                             'change this setting by using "update-alternatives '
                             '--config editor" as root.  (You can bypass this '
                             'message in the future by using reportbug in '
                             '"standard" mode or higher.) '
                             'Do you want to continue?',
                             'Continue filing this report.',
                             'Stop reportbug to change editors.', False):
                ewrite('Exiting per user request.\n')
                sys.exit(1)

        incfiles = ""
        if self.options.include:
            for f in self.options.include:
                if os.path.exists(f):
                    with open(f, errors='backslashreplace') as fp:
                        incfiles += '\n*** {}\n{}'.format(f, fp.read())
                else:
                    ewrite("Can't find %s to include!\n", f)
                    sys.exit(1)
            incfiles += '\n'

        pkgavail = maintainer = origin = src_name = state = debsumsoutput = ''
        depends = []
        recommends = []
        suggests = []
        conffiles = []
        reportinfo = None
        isvirtual = (package in list(sysinfo.get('otherpkgs', {}).keys()) and
                     package not in sysinfo.get('nonvirtual', []))
        issource = installed = usedavail = False
        status = None

        if self.options.source:
            issource = True

        exinfo = None
        # If user specified a bug number on the command line
        try:
            if bugnumber:
                reportre = re.compile(r'^#?(\d+)$')
                match = reportre.match(package)
                if match:
                    report = int(match.group(1))
                    exinfo = ui.show_report(report, 'debian', self.options.mirrors,
                                            self.options.http_proxy, self.options.timeout, queryonly=True,
                                            title=VERSION,
                                            archived=False,
                                            mbox_reader_cmd=self.options.mbox_reader_cmd)
                    # When asking to re-display the bugs list, None is returned
                    # given we're in the part of code that's executed when the
                    # user pass a bug number on the cli, so we'll exit
                    if exinfo is None:
                        raise NoReport
                    else:
                        package = exinfo.package or exinfo.source
                else:
                    efail("The report bug number provided seems to not exist.\n")
        except NoBugs:
            efail('No such bug report.\n')
        except NoReport:
            efail('Exiting.\n')

        if not pkgversion and self.options.querydpkg and \
                sysinfo.get('query-dpkg', True) and \
                package not in list(debbugs.SYSTEMS[bts].get('otherpkgs').keys()):
            ewrite("Getting status for %s...\n", package)
            status = utils.get_package_status(package)

            pkgavail, installed = status[1], status[6]
            # Packages that only exist to do weird dependency things
            deppkgs = sysinfo.get('deppkgs')
            if pkgavail and deppkgs:
                if installed and package in deppkgs:
                    depends = status[2]
                    if depends:
                        newdepends = []
                        for x in depends:
                            newdepends.extend(x)
                        depends = newdepends
                        if len(depends) == 1:
                            if mode < MODE_ADVANCED:
                                ewrite('Dependency package "%s" corresponds to '
                                       'actual package "%s".\n', package, depends[0])
                                package = depends[0]
                        else:
                            opts = [(x,
                                     (utils.get_package_status(x)[11] or
                                      'not installed')) for x in depends]
                            if mode >= MODE_ADVANCED:
                                opts += [(package,
                                          status[11] + ' (dependency package)')]

                            package = ui.menu('%s is a dependency package.  '
                                              'Which of the following '
                                              'packages is the bug in?' % package,
                                              opts,
                                              'Select one of these packages: ')
                        ewrite("Getting status for %s...\n", package)
                        status = utils.get_package_status(package)
                        pkgavail, installed = status[1], status[6]

            if not pkgavail and not isvirtual:
                # Look for a matching source package
                packages = utils.get_source_package(package)
                if self.options.source:
                    issource = True
                    # package is already ok here, just need the version
                    # so we loop over the bin pkgs looking for one installed
                    # and then get its version
                    if len(packages) > 0:
                        for p in packages:
                            v = utils.get_package_status(p[0])[0]
                            if v:
                                pkgversion = v
                                break
                elif len(packages) > 0:
                    src = utils.get_source_name(package)
                    if len(packages) and not notatty:
                        packages.sort()
                        if src not in [x[0] for x in packages]:
                            packages.append((src, 'Source package'))

                        if len(packages) > 1:
                            package = ui.menu(
                                'Which of the following packages is the bug in?',
                                packages, empty_ok=True,
                                prompt='Select one of these packages: ')
                        else:
                            package = packages[0][0]

                    if not package:
                        efail("No package specified; stopping.\n")

                    if package != src:
                        ewrite("Getting status for %s...\n", package)
                        status = utils.get_package_status(package)
                        pkgavail, installed = status[1], status[6]
                    elif len(packages) > 1:
                        issource = True
                else:
                    ewrite('No matching source or binary packages.\n')

            if (not installed and not isvirtual and not issource) and not notatty:
                packages = utils.packages_providing(package)
                tmp = pack = None
                if not packages:
                    if ui.yes_no('A package named "%s" does not appear to be installed; do '
                                 'you want to search for a similar-looking filename in '
                                 'an installed package' % package,
                                 'Look for a file with a similar filename.',
                                 'Continue filing with this package name.', True):
                        pkgavail = False
                    else:
                        pack = package
                        packages = [(package, '')]
                        ewrite("Getting available info for %s...\n", package)
                        status = utils.get_package_status(package, avail=True)
                        check_available = False
                        usedavail = True

                if not packages and not pkgavail and not pack:
                    (tmp, pack) = find_package_for(package, notatty)
                    if pack:
                        status = None
                        if not ui.yes_no("A package named '%s' does not appear to be installed "
                                         "on your system; however, '%s' contains a file named "
                                         "'%s'.  Do you want to file your report on the "
                                         "package reportbug found" % (package, pack, tmp),
                                         'Yes, use the package specified.',
                                         'No, give up the search.'):
                            efail("Package not installed; stopping.\n")

                if not status and pack:
                    foundfile, package = tmp, pack
                    ewrite("Getting status for %s...\n", package)
                    status = utils.get_package_status(package)
                elif not packages:
                    if not ui.yes_no(
                            'This package does not appear to be installed; continue '
                            'with this report', 'Ignore this problem and continue.',
                            'Exit without filing a report.', False):
                        efail("Package not installed; stopping.\n")
                elif (len(packages) > 1) or (packages[0][0] != package):
                    this_package = [(package, 'Uninstalled/non-existent package')]
                    packages.sort()
                    package = ui.menu('Which of the following installed packages '
                                      'is the bug in?', packages + this_package,
                                      'Select one of these packages: ',
                                      empty_ok=True)
                    if not package:
                        efail("No package specified; stopping.\n")
                    else:
                        ewrite("Getting status for %s...\n", package)
                        status = utils.get_package_status(package)
            elif not pkgavail and not notatty and not isvirtual and not issource:
                if not ui.yes_no(
                        'This package does not appear to exist; continue',
                        'Ignore this problem and continue.',
                        'Exit without filing a report.', False):
                    efail("Package does not exist; stopping.\n")
                    sys.exit(1)

            # we can use status only if it's not a source pkg
            if not issource:
                (pkgversion, pkgavail, depends, recommends, conffiles, maintainer,
                 installed, origin, vendor, reportinfo, priority, desc, src_name,
                 fulldesc, state, suggests, section) = status

        buginfo = '/usr/share/bug/' + package
        bugexec = submitas = submitto = presubj = None
        reportwith = []
        supplemental = []
        if os.path.isfile(buginfo) and os.access(buginfo, os.X_OK):
            bugexec = buginfo
        elif os.path.isdir(buginfo):
            if os.path.isfile(buginfo + '/script') and os.access(buginfo + '/script', os.X_OK):
                bugexec = buginfo + '/script'

            if os.path.isfile(buginfo + '/presubj'):
                presubj = buginfo + '/presubj'

            if os.path.isfile(buginfo + '/control'):
                submitas, submitto, reportwith, supplemental = \
                    utils.parse_bug_control_file(buginfo + '/control')
        elif os.path.isfile('/usr/share/bug/default/' + package) \
                and os.access('/usr/share/bug/default/' + package, os.X_OK):
            bugexec = '/usr/share/bug/default/' + package
        elif os.path.isdir('/usr/share/bug/default/' + package):
            buginfo = '/usr/share/bug/default/' + package
            if os.path.isfile(buginfo + '/script') and os.access(buginfo + '/script',
                                                                 os.X_OK):
                bugexec = buginfo + '/script'

            if os.path.isfile(buginfo + '/presubj'):
                presubj = buginfo + '/presubj'

            if os.path.isfile(buginfo + '/control'):
                submitas, submitto, reportwith, supplemental = \
                    utils.parse_bug_control_file(buginfo + '/control')

        if submitas and (submitas not in reportwith):
            reportwith += [submitas]

        if reportwith:
            # Remove current package from report-with list
            reportwith = [x for x in reportwith if x != package]

        if (pkgavail and self.options.verify and os.path.exists('/usr/bin/debsums')
                and not self.options.kudos and state == 'installed'):
            ewrite('Verifying package integrity...\n')
            rc, output = subprocess.getstatusoutput('/usr/bin/debsums --ignore-permissions -s ' +
                                                  shlex.quote(package))
            debsumsoutput = output

            if rc and not notatty:
                if not ui.yes_no('There may be a problem with your installation of ' + package +
                                 ';\nthe following problems were detected by debsums:\n' +
                                 output + '\nDo you still want to file a report',
                                 'Ignore this problem and continue.  This may be '
                                 'appropriate if you have fixed the package manually already.  '
                                 'This problem may also result from the use of localepurge.',
                                 'Exit without filing a report.', False, nowrap=True):
                    efail("Package integrity check failed; stopping.\n")

        if not pkgversion or usedavail or (not pkgavail and
                                           not self.options.pkgversion and
                                           not self.options.source):
            if not bugnumber and not (isvirtual or notatty):
                pkgversion = ui.get_string('Please enter the version of the '
                                           'package this report applies to '
                                           '(blank OK)', empty_ok=True, force_prompt=True)
        elif (check_available and not (self.options.kudos or notatty or self.options.offline)
              and state == 'installed' and bts == 'debian'):
            arch = utils.get_arch()
            check_more = (mode > MODE_STANDARD)
            if check_more:
                ewrite('Checking for newer versions at madison,' +
                       ' incoming.debian.org and http://ftp-master.debian.org/new.html\n')
            else:
                ewrite('Checking for newer versions at madison...\n')
            (avail, toonew) = checkversions.check_available(
                package, pkgversion, timeout=self.options.timeout,
                check_incoming=check_more, check_newqueue=check_more,
                http_proxy=self.options.http_proxy, arch=arch)
            if toonew:
                if not ui.yes_no('\nYour version of %s (%s) is newer than that in Debian!\n'
                                 'Do you still want to file a report' % (package, pkgversion),
                                 'Ignore this problem and continue.  This may be '
                                 'appropriate if you know this bug is present in older '
                                 'releases of the package, or you\'re running a mixed '
                                 'stable/testing installation.',
                                 'Exit without filing a report.', False):
                    efail("Newer released version; stopping.\n")

            if avail:
                availtext = ''
                availlist = list(avail.keys())
                availlist.sort()
                for rel in availlist:
                    availtext += '  %s: %s\n' % (rel, avail[rel])

                if not ui.yes_no(('\nYour version (%s) of %s appears to be out of date.\nThe '
                                  'following newer release(s) are available in the Debian '
                                  'archive:\n' % (pkgversion, package)) + availtext +
                                  'Please try to verify if the bug you are about to report is ' +
                                  'already addressed by these releases.  Do you still want to file a report',
                                  'Ignore this problem and continue.  This may be '
                                  'appropriate if you know this bug is still present in more '
                                  'recent releases of the package.',
                                  'Exit without filing a report.', False, nowrap=True):
                    efail("Newer released version; stopping.\n")

        bts = DEFAULT_BTS
        if self.options.bts:
            bts = self.options.bts
            ewrite("Will send report to %s (per request).\n",
                   debbugs.SYSTEMS[bts].get('name', bts))
        elif origin:
            if origin.lower() == bts:
                ewrite("Package originates from %s.\n", vendor or origin)
                reportinfo = None
            elif origin.lower() in list(debbugs.SYSTEMS.keys()):
                ewrite("Package originates from %s; overriding your system "
                       "selection.\n", vendor or origin)
                bts = origin.lower()
                sysinfo = debbugs.SYSTEMS[bts]
            elif reportinfo:
                ewrite("Unknown origin %s; will send to %s.\n", origin,
                       reportinfo[1])
                rtype, submitto = reportinfo
            elif submitto:
                ewrite("Unknown origin %s; will send to %s.\n", origin, submitto)
            else:
                ewrite("Unknown origin %s; will send to %s.\n", origin, bts)
        elif reportinfo:
            rtype, submitto = reportinfo
            ewrite("Will use %s protocol talking to %s.\n", rtype, submitto)
            dontquery = True
        else:
            lsbr = subprocess.getoutput('lsb_release -si 2>/dev/null')
            if lsbr:
                distro = lsbr.strip().lower()
                if distro in debbugs.SYSTEMS:
                    bts = distro
                    ewrite("Will send report to %s (per lsb_release).\n",
                           debbugs.SYSTEMS[bts].get('name', bts))

        if rtype == 'mailto':
            rtype = 'debbugs'
            dontquery = True

        special = False
        if not body and not subject and not notatty:
            res = special_prompts(package, bts, ui, fromaddr,
                                  self.options.timeout,
                                  not self.options.offline and
                                  (check_available or not dontquery),
                                  self.options.http_proxy)
            if res:
                (subject, severity, h, ph, body, query) = res
                headers += h
                pseudos += ph
                if not query:
                    dontquery = True
                special = True

        if not (dontquery or notatty or self.options.kudos):
            pkg, src = package, issource
            if self.options.query_src:
                src = True
                if src_name:
                    pkg = src_name
            try:
                exinfo = ui.handle_bts_query(pkg, bts, self.options.timeout,
                                             self.options.mirrors,
                                             self.options.http_proxy,
                                             source=src,
                                             queryonly=self.options.queryonly,
                                             version=pkgversion,
                                             mbox_reader_cmd=self.options.mbox_reader_cmd,
                                             latest_first=self.options.latest_first)
            except UINotImplemented:
                exinfo = None
            except NoNetwork:
                sys.exit(1)
            except NoPackage:
                if not self.options.queryonly and maintainer and ui.yes_no(
                        'There is no record of this package in the bug tracking '
                        'system.\nSend report directly to maintainer',
                        'Send the report to the maintainer (%s).' % maintainer,
                        'Send the report to the BTS anyway.'):
                    rtype = 'debbugs'
                    sendto = maintainer
            except NoBugs:
                ewrite('No bug reports found.\n')
            except NoReport:
                if self.options.queryonly:
                    ewrite('Exiting at user request.\n')
                else:
                    ewrite('Nothing new to report; exiting.\n')
                return
            except QuertBTSError:
                ewrite('Error accessing the BTS, no bugs information available.\n')

            if self.options.queryonly and not exinfo:
                return

        ccaddr = os.environ.get('MAILCC')
        if self.options.nocc:
            bccaddr = os.environ.get('MAILBCC')
        else:
            bccaddr = os.environ.get('MAILBCC', fromaddr)

        if maintainer:
            mstr = "Maintainer for %s is '%s'.\n" % (package, maintainer)
            ewrite(mstr)
            if 'qa.debian.org' in maintainer:
                ui.long_message('''\
This package seems to be currently "orphaned"; it also seems you're a
bit interested in this package, since you're reporting a bug against
it, so you might consider being involved in the package maintenance in Debian and/or adopting it.  Please be aware that your
report may not be resolved for a while, because the package seems to lack an
active maintainer, but please GO ON and REPORT the bug, if there is
one.

For more details, please see: http://www.debian.org/devel/wnpp/''')

        if self.options.kudos and not self.options.debugmode:
            sendto = '%s@packages.debian.org' % package

        depinfo = ""
        # Grab dependency list, removing version conditions.
        if (depends or recommends or suggests) and not self.options.kudos:
            ewrite("Looking up dependencies of %s...\n", package)
            depinfo = (utils.get_dependency_info(package, depends) +
                       utils.get_dependency_info(package, recommends, "recommends") +
                       utils.get_dependency_info(package, suggests, "suggests"))

        if reportwith and not self.options.kudos:
            # retrieve information for the packages listed in 'report-with' bug
            # control file field
            for extrapackage in reportwith:
                ewrite("Getting status for related package %s...\n", extrapackage)
                extrastatus = utils.get_package_status(extrapackage)
                # depends
                if extrastatus[2]:
                    extradepends = [x for x in extrastatus[2] if package not in x]
                    ewrite("Looking up 'depends' of related package %s...\n", extrapackage)
                    depinfo += utils.get_dependency_info(extrapackage, extradepends)
                # recommends
                if extrastatus[3]:
                    extrarecommends = [x for x in extrastatus[3] if package not in x]
                    ewrite("Looking up 'recommends' of related package %s...\n", extrapackage)
                    depinfo += utils.get_dependency_info(extrapackage, extrarecommends, "recommends")
                # suggests
                if extrastatus[15]:
                    extrasuggests = [x for x in extrastatus[15] if package not in x]
                    ewrite("Looking up 'suggests' of related package %s...\n", extrapackage)
                    depinfo += utils.get_dependency_info(extrapackage, extrasuggests, "suggests")

        if supplemental and not self.options.kudos:
            ewrite("Looking up status of additional packages...\n")
            depinfo += utils.get_dependency_info(
                package, [[x] for x in supplemental], rel='is related to')

        confinfo = []
        if conffiles and not self.options.kudos:
            ewrite("Getting changed configuration files...\n")
            confinfo, changed = utils.get_changed_config_files(
                conffiles, self.options.nocompress)

            if self.options.noconf and changed:
                for f in changed:
                    confinfo[f] = 'changed [not included]'
            elif changed and not notatty:
                while 1:
                    x = ui.select_options(
                        "*** WARNING: The following configuration files have been "
                        "modified:\n" + "\n".join(changed) +
                        "\nSend modified configuration files", 'Ynd',
                        {'y': 'Send your modified configuration files.',
                         'n': "Don't send modified configuration files.",
                         'd': 'Display modified configuration files (exit with "q").'})
                    if x == 'n':
                        for f in changed:
                            confinfo[f] = 'changed [not included]'
                        break
                    elif x == 'd':
                        PAGER = os.environ.get('PAGER', '/usr/bin/sensible-pager')
                        ui.system(PAGER + ' ' + ' '.join(changed))
                    else:
                        break

        conftext = ''
        if confinfo:
            conftext = '\n-- Configuration Files:\n'
            files = list(confinfo.keys())
            files.sort()
            for f in files:
                conftext = conftext + '%s %s\n' % (f, confinfo[f])

        if (self.options.debconf and os.path.exists('/usr/bin/debconf-show') and
                not self.options.kudos and installed):
            showpkgs = package
            if reportwith:
                showpkgs += ' ' + ' '.join(reportwith)
            r = subprocess.run(
                'DEBCONF_SYSTEMRC=1 DEBCONF_NOWARNINGS=yes '
                '/usr/bin/debconf-show %s' % showpkgs,
                shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
            (status, output) = r.returncode, r.stdout.decode(errors='backslashreplace').rstrip()
            if status:
                conftext += '\n-- debconf-show failed\n'
            elif output:
                if (notatty or ui.yes_no("*** The following debconf settings were detected:\n" +
                                         output + "\nInclude these settings in your report",
                                         'Send your debconf settings.',
                                         "Don't send your debconf settings.", nowrap=True)):
                    conftext += '\n-- debconf information:\n%s\n' % output
                else:
                    conftext += '\n-- debconf information excluded\n'
            else:
                conftext += '\n-- no debconf information\n'

        ewrite('\n')
        prompted = False
        if interactive and not (self.options.kudos or exinfo) and presubj:
            with open(presubj, errors='backslashreplace') as f:
                ui.display_report(f.read() + '\n', presubj=True)

        if self.options.kudos:
            subject = subject or ('Thanks for packaging %s!' % package)
        elif exinfo:
            if special:
                body = ''
            prompted = True
            subject_ok = False
            while not subject_ok:
                subject = ui.get_string(
                    'Please provide a subject for your response.', default="Re: %s" % exinfo.subject, force_prompt=True)
                if subject:
                    subject_ok = True
                else:
                    ewrite("Providing a subject is mandatory.\n")

            # Check to make sure the bug still exists to avoid auto-reopens
            if subject and pkgversion:
                if not ui.yes_no('Does this bug still exist in version %s '
                                 'of this package?' % pkgversion,
                                 'Yes, it does.',
                                 'No, it doesn\'t (or I don\'t know).',
                                 default=False):
                    pkgversion = None
        elif not subject and not notatty:
            prompted = True
            subject_ok = False
            while not subject_ok:
                subject = ui.get_string(
                    'Briefly describe the problem (max. 100 characters '
                    'allowed). This will be the bug email subject, so keep the '
                    'summary as concise as possible, for example: "fails to '
                    'send email" or "does not start with -q option specified" '
                    '(enter Ctrl+c to exit reportbug without reporting a bug).',
                    force_prompt=True)

                if subject:
                    subject_ok = True
                else:
                    ewrite("Providing a subject is mandatory.\n")

        if len(subject) > 100 and prompted and mode < MODE_EXPERT:
            subject = ui.get_string(
                'Your description is a bit long; please enter a shorter subject. '
                '(An empty response will retain the existing subject.)',
                empty_ok=True, force_prompt=True) or subject
        if package != 'wnpp' and mode < MODE_EXPERT:
            if foundfile:
                subject = foundfile + ": " + subject
                ewrite("Rewriting subject to '%s'\n", subject)
            elif not re.match(r"\S+:\s", subject) and not subject.startswith(package):
                subject = package + ": " + subject
                ewrite("Rewriting subject to '%s'\n", subject)

        listcc = self.options.listcc
        if not listcc:
            listcc = []

        if self.options.listccme:
            detected_addr = self.options.email or utils.get_email()[1]
            if not detected_addr:
                efail("list-cc-me option specified but email address not detected")
            listcc += [detected_addr]

        if not listcc and mode > MODE_STANDARD and rtype == 'debbugs' and not self.options.testmode and not self.options.template and self.options.ccmenu:
            listcc += ui.get_multiline(
                'Enter any additional addresses this report should be sent to; press ENTER after each address.')

        # If the bug is reported against a package with a version that possibly
        # indicates a security update add the security or LTS team to CC
        # after user confirmation
        if pkgversion and package and not self.options.offline and mode > MODE_NOVICE and utils.is_security_update(package, pkgversion):
            if ui.yes_no('Do you want to report a regression because of a security update? ',
                         'Yes, please inform the LTS and security teams.',
                         'No or I am not sure.', True):
                distnumber = re.search('[+~]deb(\d+)u\d+', pkgversion).group(1)
                support = 'none'
                email_address = 'none'
                try:
                    r = requests.get('https://security-tracker.debian.org/tracker/distributions.json', timeout=self.options.timeout)
                    data = r.json()
                    for key, value in data.items():
                        if distnumber == value['major-version']:
                            support = value['support']
                            email_address = value['contact']
                            break

                    if support != 'none' and utils.check_email_addr(email_address):
                        listcc += [email_address]
                    else:
                        raise

                except requests.exceptions.RequestException:
                    ewrite('Unable to connect to security-tracker.debian.org.\n'
                           'Please try again later or contact the LTS or security team via email directly.\n')
                except:  # catch-all
                    ewrite('No support team contact address could be identified.\n')

        if severity and rtype:
            severity = debbugs.convert_severity(severity, rtype)

        klass = self.options.klass
        if not notatty and not (exinfo or self.options.kudos):
            if not severity:
                if rtype == 'gnats':
                    severities = debbugs.SEVERITIES_gnats
                    default = 'non-critical'
                else:
                    severities = debbugs.SEVERITIES
                    if mode < MODE_STANDARD:
                        ewrite("Removing release critical severities, since running in \'%s\' mode.\n" % utils.MODELIST[mode])
                        for sev in ['critical', 'grave', 'serious', 'does-not-build']:
                            del severities[sev]
                    default = 'normal'
                while not severity or severity not in debbugs.SEVLIST:
                    severity = ui.menu("How would you rate the severity of this "
                                       "problem or report?", severities,
                                       'Please select a severity level: ',
                                       default=default, order=debbugs.SEVLIST)
                    # urwid has a cancel and a quit button that return < 0
                    if isinstance(severity, int) and severity < 0:
                        sys.exit()

            if rtype == 'gnats':
                # Class of report
                klass = ui.menu("What sort of problem are you reporting?",
                                debbugs.CLASSES, 'Please select a class: ',
                                default='sw-bug', order=debbugs.CLASSLIST)

        severity = severity or 'normal'

        justification = self.options.justification
        if rtype == 'debbugs' and package != 'wnpp' and mode < MODE_EXPERT:
            if severity in ('critical', 'grave'):
                justification = ui.menu(
                    'You are reporting a ' + severity + ' bug; which of the '
                                                        'following criteria does it meet?',
                    debbugs.JUSTIFICATIONS[severity],
                    'Please select the impact of the bug: ', default='unknown')
            elif severity == 'serious':
                justification = ui.get_string(
                    'You are reporting a serious bug; which section of the '
                    'Debian Policy Manual contains the "must" or "required" '
                    'directive that it violates (E.g., "1.2.3")? '
                    'Just type "unknown" if you are not sure (that would '
                    'downgrade severity to normal).', force_prompt=True)
                if re.match(r'[0-9]+\.[0-9.]+', justification):
                    justification = 'Policy ' + justification
                elif not justification:
                    justification = 'unknown'

            if justification == 'unknown':
                justification = ''
                severity = 'normal'
                ewrite('Severity downgraded to "normal".\n')

        if severity == 'does-not-build':
            if pkgversion and not src_name:
                src_name = package
            if src_name and check_available and not notatty:
                ewrite('Checking buildd.debian.org for past builds of %s...\n',
                       src_name)
                built = checkbuildd.check_built(src_name,
                                                http_proxy=self.options.http_proxy,
                                                timeout=self.options.timeout)

                severity = 'serious'
                justification = 'fails to build from source'
                # special-case only if it was built in the past
                if built:
                    justification += ' (but built successfully in the past)'
            else:
                severity = 'serious'
                justification = 'fails to build from source'
                if not notatty:
                    # special-case only if it was built in the past
                    if ui.yes_no(
                            'Has this package successfully been built for this '
                            'architecture in the past (you can look this up at '
                            'buildd.debian.org)',
                            'Yes, this is a recently-introduced problem.',
                            'No, it has always been this way.'):
                        justification += ' (but built successfully in the past)'

        HOMEDIR = os.environ.get('HOME', '/')

        if (rtype == 'debbugs' and not self.options.tags and
                not (notatty or self.options.kudos or exinfo) and
                package not in ('wnpp', 'ftp.debian.org', 'release.debian.org') and
                mode > MODE_NOVICE and self.options.tagsmenu):
            tags = debbugs.get_tags(severity, mode)

            taglist = ui.select_multiple(
                'Do any of the following apply to this report?', tags,
                'Please select tags: ')
            if taglist is None:
                # We've pressed cancel or quit in urwid
                sys.exit()

        patch = ('patch' in taglist)

        if justification and 'security' not in taglist and 'security' in \
                justification:
            ewrite('Adding security tag to this report.\n')
            taglist += ['security']

        if justification and 'ftbfs' not in taglist and 'fails to build from source' in justification:
            ewrite('Adding ftbfs tag to this report.\n')
            taglist += ['ftbfs']

        if taglist:
            tags = ' '.join(taglist)
        else:
            tags = ''

        if 'security' in taglist:
            if self.options.secteam or (self.options.secteam is None and ui.yes_no(
                    'Are you reporting an undisclosed vulnerability? If so, in order to responsibly disclose the issue, it should not be sent to the public BTS right now, but instead to the private Security Team mailing list.',
                    'Yes, it is an undisclosed vulnerability, send this report to the private Security Team mailing list and not to the BTS.',
                    'No, it is already a publicly disclosed vulnerability, send this report to the BTS.', False)):
                sendto = 'team@security.debian.org'

        # Execute bug script
        if self.options.bugscript and bugexec and not self.options.kudos:
            # add a warning, since it can take a while, 587952
            ewrite("Gathering additional data, this may take a while...\n")
            handler = '/usr/share/reportbug/handle_bugscript'

            # we get the return code of the script, headers and pseudo- set
            # by the script, and last the text output of the script
            (rc, bugscript_hdrs, bugscript_pseudo, text, bugscript_attachments) = \
                utils.exec_and_parse_bugscript(handler, bugexec, ui.system)

            if rc and not notatty:
                if not ui.yes_no('The package bug script %s exited with an error status (return '
                                 'code = %s). Do you still want to file a report?' % (bugexec, rc),
                                 'Ignore this problem and continue.',
                                 'Exit without filing a report.', False, nowrap=True):
                    efail("Package bug script failed; stopping.\n")

            # add bugscript headers only if present
            if bugscript_hdrs:
                headers.extend(bugscript_hdrs.split('\n'))
            if bugscript_pseudo:
                pseudos.append(bugscript_pseudo.strip())
            # add attachments only if no MUA is used, using attachments with a
            # MUA is not yet supported by reportbug.
            if bugscript_attachments and not mua:
                attachments += bugscript_attachments
            addinfo = None
            if not self.options.noconf:
                addinfo = "\n-- Package-specific info:\n" + text

            if addinfo and incfiles:
                incfiles = addinfo + "\n" + incfiles
            elif addinfo:
                incfiles = addinfo

        if bts == 'debian' and 'security' in taglist and sendto != 'team@security.debian.org':
            ewrite('Will send a CC of this report to the Debian Security Team.\n')
            listcc += ['Debian Security Team <team@security.debian.org>']

        # Prepare bug report
        if self.options.kudos:
            message = '\n\n'
            if not mua:
                SIGFILE = os.path.join(HOMEDIR, '.signature')
                try:
                    with open(SIGFILE, errors='backslashreplace') as sf:
                        message = "\n\n-- \n" + sf.read()
                except IOError:
                    pass
        else:
            p = submitas or package
            # multiarch: remove arch qualifier only if we're not reporting
            # against the src package
            if not p.startswith('src:'):
                p = p.split(':')[0]
            message = utils.generate_blank_report(
                p, pkgversion, severity, justification,
                depinfo, conftext, foundfile, incfiles, bts, exinfo, rtype,
                klass, subject, tags, body, mode, pseudos, debsumsoutput,
                issource=issource, options=self.options)

        # Substitute server email address
        if submitto and '@' not in sendto:
            if '@' in submitto:
                sendto = submitto
            else:
                if exinfo:
                    if sendto != 'submit':
                        sendto = '%d-%s' % (exinfo.bug_num, sendto)
                    else:
                        sendto = str(exinfo.bug_num)

                sendto = sendto + '@' + submitto
        elif '@' not in sendto:
            if exinfo:
                if sendto != 'submit':
                    sendto = '%d-%s' % (exinfo.bug_num, sendto)
                else:
                    sendto = str(exinfo.bug_num)

            try:
                sendto = sysinfo['email'] % sendto
            except TypeError:
                sendto = sysinfo['email']

            sendto = email.utils.formataddr((sysinfo['name'] +
                                               ' Bug Tracking System', sendto))

        mailing = not (mua or self.options.printonly or self.options.template)
        message = "Subject: %s\n%s" % (subject, message)
        justsave = False

        if mailing:
            fh, filename = TempFile(prefix=tfprefix, dir=self.options.draftpath)
            fh.write(message)
            fh.close()
            oldmua = mua or self.options.mua
            if not self.options.body and not self.options.bodyfile:
                message, haspatch, justsave = handle_editing(
                    filename, message, self.options, sendto, attachments,
                    package, severity, mode, charset=charset, tags=tags)
                if haspatch:
                    patch = True

            if not oldmua and self.options.mua:
                mua = self.options.mua
            if mua:
                mailing = False
            elif not sendto:
                print(message, end=' ')
                cleanup_temp_file(filename)
                return

            cleanup_temp_file(filename)

            if not mua and patch and not attachments and not notatty:
                while True:
                    patchfile = ui.get_filename(
                        'What is the filename of the patch (if none, or you have '
                        'already included it, just press ENTER)?',
                        force_prompt=True)
                    if patchfile:
                        attachfile = os.path.expanduser(patchfile)
                        # loop over the glob of 'attachfile', we support glob now
                        for attachf in sorted(glob(attachfile), key=str.casefold):
                            if os.path.exists(attachfile):
                                attachments.append(attachfile)
                            else:
                                ewrite('%s not found!', attachfile)
                    else:
                        break
        if CCS:
            listcc += CCS
        if listcc:
            headers.append('X-Debbugs-CC: ' + ', '.join(listcc))

        # Pass both headers and pseudo-headers (passed on command-line, f.e.)
        body, headers, pseudoheaders = utils.cleanup_msg(message, headers, pseudos, rtype)

        if sign:
            ewrite('Passing message to %s for signature...\n', sign)
            oldbody = body
            body = submit.sign_message(body, fromaddr, package, pgp_addr, sign, self.options.draftpath)
            if not body:
                ewrite('Signature failed; sending message unsigned.\n')
                body = oldbody

        if pseudoheaders:
            body = '\n'.join(pseudoheaders) + '\n\n' + body

        # Strip the body of useless whitespace at the end, then put a final
        # newline in the message.  See #234963.
        body = body.rstrip('\n') + '\n'

        if justsave:
            fh, outputfile = TempFile(prefix=tfprefix,
                                      dir=self.options.draftpath)
            fh.close()
            mua = mailing = False
            # fake sending the report, it actually saves it in a tempfile
            # but with all the email headers and stuff
            submit.send_report(
                body, attachments, mua, fromaddr, sendto, ccaddr, bccaddr,
                headers, package, charset, mailing, sysinfo, rtype, exinfo,
                outfile=self.options.outfile or outputfile, mta=None,
                smtphost=None)
        else:
            submit.send_report(
                body, attachments, mua, fromaddr, sendto, ccaddr, bccaddr,
                headers, package, charset, mailing, sysinfo, rtype, exinfo,
                self.options.replyto, self.options.printonly,
                self.options.template, self.options.outfile, self.options.mta,
                self.options.kudos, self.options.smtptls, smtphost,
                self.options.smtpuser, self.options.smtppasswd,
                self.options.paranoid, self.options.draftpath,
                self.options.envelopefrom)

        if self.options.exitprompt:
            ui.get_string('Please press ENTER to exit reportbug: ')
        return


if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        ewrite("\nreportbug: exiting due to user interrupt.\n")
    except debbugs.Error as x:
        ewrite('error accessing BTS: %s\n' % x)
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
April 29 2020 04:21:46
root / root
0755
X11
--
July 01 2024 06:14:58
root / root
0755
2to3-2.7
0.094 KB
March 23 2024 18:55:36
root / root
0755
[
58.656 KB
February 28 2019 15:30:31
root / root
0755
aa-enabled
30.211 KB
March 30 2019 13:23:11
root / root
0755
aa-exec
30.211 KB
March 30 2019 13:23:11
root / root
0755
add-apt-repository
6.207 KB
March 30 2019 19:45:34
root / root
0755
addpart
26.078 KB
April 06 2024 22:33:55
root / root
0755
addr2line
31.094 KB
March 21 2019 14:49:23
root / root
0755
apropos
54.977 KB
February 01 2024 13:35:20
root / root
0755
apt
18.086 KB
April 19 2021 16:41:13
root / root
0755
apt-add-repository
6.207 KB
March 30 2019 19:45:34
root / root
0755
apt-cache
82.156 KB
April 19 2021 16:41:13
root / root
0755
apt-cdrom
26.156 KB
April 19 2021 16:41:13
root / root
0755
apt-config
26.086 KB
April 19 2021 16:41:13
root / root
0755
apt-extracttemplates
22.156 KB
April 19 2021 16:41:13
root / root
0755
apt-ftparchive
238.156 KB
April 19 2021 16:41:13
root / root
0755
apt-get
46.156 KB
April 19 2021 16:41:13
root / root
0755
apt-key
27.08 KB
April 19 2021 16:41:13
root / root
0755
apt-listchanges
10.613 KB
March 17 2019 22:48:06
root / root
0755
apt-mark
54.156 KB
April 19 2021 16:41:13
root / root
0755
apt-sortpkgs
46.086 KB
April 19 2021 16:41:13
root / root
0755
ar
63.07 KB
March 21 2019 14:49:23
root / root
0755
arch
38.656 KB
February 28 2019 15:30:31
root / root
0755
as
872.93 KB
March 21 2019 14:49:23
root / root
0755
at
54.258 KB
July 24 2018 09:17:21
daemon / daemon
6755
atq
54.258 KB
July 24 2018 09:17:21
daemon / daemon
6755
atrm
54.258 KB
July 24 2018 09:17:21
daemon / daemon
6755
autoconf
14.422 KB
August 20 2017 18:17:16
root / root
0755
autoheader
8.336 KB
August 20 2017 18:17:16
root / root
0755
autom4te
31.905 KB
August 20 2017 18:17:16
root / root
0755
autoreconf
20.667 KB
August 20 2017 18:17:16
root / root
0755
autoscan
16.73 KB
August 20 2017 18:17:16
root / root
0755
autoupdate
33.08 KB
August 20 2017 18:17:16
root / root
0755
awk
119.117 KB
March 23 2012 20:15:00
root / root
0755
aws
0.796 KB
February 27 2019 07:44:49
root / root
0755
aws_completer
1.109 KB
February 27 2019 07:44:49
root / root
0755
b2sum
58.781 KB
February 28 2019 15:30:31
root / root
0755
base32
42.688 KB
February 28 2019 15:30:31
root / root
0755
base64
42.688 KB
February 28 2019 15:30:31
root / root
0755
basename
38.594 KB
February 28 2019 15:30:31
root / root
0755
bash
1.11 MB
April 18 2019 04:12:36
root / root
0755
bashbug
6.634 KB
April 18 2019 04:12:36
root / root
0755
batch
0.148 KB
July 24 2018 09:17:21
root / root
0755
bootctl
46.234 KB
June 29 2023 13:57:02
root / root
0755
bsd-from
10.242 KB
May 04 2018 12:24:31
root / root
0755
bsd-write
14.391 KB
May 04 2018 12:24:31
root / tty
2755
bunzip2
38.07 KB
July 21 2020 08:36:47
root / root
0755
busctl
78.188 KB
June 29 2023 13:57:02
root / root
0755
bzcat
38.07 KB
July 21 2020 08:36:47
root / root
0755
bzcmp
2.173 KB
July 21 2020 08:36:47
root / root
0755
bzdiff
2.173 KB
July 21 2020 08:36:47
root / root
0755
bzegrep
3.556 KB
July 21 2020 08:36:47
root / root
0755
bzexe
4.763 KB
June 24 2019 20:16:40
root / root
0755
bzfgrep
3.556 KB
July 21 2020 08:36:47
root / root
0755
bzgrep
3.556 KB
July 21 2020 08:36:47
root / root
0755
bzip2
38.07 KB
July 21 2020 08:36:47
root / root
0755
bzip2recover
13.992 KB
July 21 2020 08:36:47
root / root
0755
bzless
1.267 KB
July 21 2020 08:36:47
root / root
0755
bzmore
1.267 KB
July 21 2020 08:36:47
root / root
0755
c++
1.05 MB
April 06 2019 14:44:55
root / root
0755
c++filt
30.688 KB
March 21 2019 14:49:23
root / root
0755
c89
0.418 KB
June 12 2013 21:03:20
root / root
0755
c89-gcc
0.418 KB
June 12 2013 21:03:20
root / root
0755
c99
0.443 KB
June 12 2013 21:03:20
root / root
0755
c99-gcc
0.443 KB
June 12 2013 21:03:20
root / root
0755
c_rehash
6.13 KB
August 15 2023 19:14:44
root / root
0755
cal
29.148 KB
May 04 2018 12:24:31
root / root
0755
calendar
31.148 KB
May 04 2018 12:24:31
root / root
0755
captoinfo
86.109 KB
December 03 2023 15:31:37
root / root
0755
cat
42.719 KB
February 28 2019 15:30:31
root / root
0755
catchsegv
3.226 KB
June 29 2024 10:27:34
root / root
0755
catman
38.461 KB
February 01 2024 13:35:20
root / root
0755
cc
1.05 MB
April 06 2019 14:44:55
root / root
0755
certbot
0.376 KB
December 05 2020 02:33:11
root / root
0755
chacl
13.992 KB
March 01 2019 22:22:21
root / root
0755
chage
70.133 KB
July 27 2018 08:07:37
root / shadow
2755
chardet
0.38 KB
January 22 2019 00:46:22
root / root
0755
chardet3
0.38 KB
January 22 2019 00:46:22
root / root
0755
chardetect
0.38 KB
January 22 2019 00:46:22
root / root
0755
chardetect3
0.38 KB
January 22 2019 00:46:22
root / root
0755
chattr
14 KB
January 10 2020 01:19:57
root / root
0755
chcon
62.906 KB
February 28 2019 15:30:31
root / root
0755
chfn
52.828 KB
July 27 2018 08:07:37
root / root
4755
chgrp
62.813 KB
February 28 2019 15:30:31
root / root
0755
chmod
62.781 KB
February 28 2019 15:30:31
root / root
0755
choom
50.078 KB
April 06 2024 22:33:55
root / root
0755
chown
70.813 KB
February 28 2019 15:30:31
root / root
0755
chronyc
83.016 KB
March 15 2022 12:45:14
root / root
0755
chrt
34.078 KB
April 06 2024 22:33:55
root / root
0755
chsh
43.484 KB
July 27 2018 08:07:37
root / root
4755
cksum
38.625 KB
February 28 2019 15:30:31
root / root
0755
clear
14 KB
December 03 2023 15:31:37
root / root
0755
clear_console
14.305 KB
April 18 2019 04:12:36
root / root
0755
cloud-id
0.381 KB
March 19 2021 16:43:23
root / root
0755
cloud-init
0.385 KB
March 19 2021 16:43:23
root / root
0755
cloud-init-per
2.059 KB
April 29 2020 22:17:14
root / root
0755
cloud-localds
7.232 KB
July 21 2016 18:23:53
root / root
0755
cmp
50.641 KB
April 08 2019 12:04:00
root / root
0755
col
10.227 KB
May 04 2018 12:24:31
root / root
0755
colcrt
10.195 KB
May 04 2018 12:24:31
root / root
0755
colrm
10.188 KB
May 04 2018 12:24:31
root / root
0755
column
10.336 KB
May 04 2018 12:24:31
root / root
0755
comm
42.688 KB
February 28 2019 15:30:31
root / root
0755
compose
17.735 KB
February 09 2019 12:32:33
root / root
0755
corelist
14.734 KB
July 21 2020 19:27:00
root / root
0755
cp
143.438 KB
February 28 2019 15:30:31
root / root
0755
cpan
7.965 KB
July 21 2020 19:27:00
root / root
0755
cpan5.28-x86_64-linux-gnu
7.985 KB
July 21 2020 19:27:00
root / root
0755
cpio
154.609 KB
June 04 2023 15:01:54
root / root
0755
cpp
1.05 MB
April 06 2019 14:44:55
root / root
0755
cpp-8
1.05 MB
April 06 2019 14:44:55
root / root
0755
crontab
42.547 KB
October 11 2019 07:58:52
root / crontab
2755
csplit
54.844 KB
February 28 2019 15:30:31
root / root
0755
ctstat
22.742 KB
December 03 2020 18:42:49
root / root
0755
curl
226.07 KB
January 28 2024 21:15:21
root / root
0755
cut
42.75 KB
February 28 2019 15:30:31
root / root
0755
cvtsudoers
250.289 KB
January 21 2024 20:52:36
root / root
0755
dash
118.617 KB
January 17 2019 19:08:32
root / root
0755
date
106.844 KB
February 28 2019 15:30:31
root / root
0755
dbus-cleanup-sockets
13.984 KB
October 23 2023 08:29:25
root / root
0755
dbus-daemon
235.039 KB
October 23 2023 08:29:25
root / root
0755
dbus-monitor
25.992 KB
October 23 2023 08:29:25
root / root
0755
dbus-run-session
13.984 KB
October 23 2023 08:29:25
root / root
0755
dbus-send
29.984 KB
October 23 2023 08:29:25
root / root
0755
dbus-update-activation-environment
13.984 KB
October 23 2023 08:29:25
root / root
0755
dbus-uuidgen
13.984 KB
October 23 2023 08:29:25
root / root
0755
dd
74.914 KB
February 28 2019 15:30:31
root / root
0755
deb-systemd-helper
20.828 KB
November 21 2018 23:15:24
root / root
0755
deb-systemd-invoke
4.326 KB
November 21 2018 23:15:24
root / root
0755
debconf
2.792 KB
October 01 2021 09:39:27
root / root
0755
debconf-apt-progress
11.271 KB
October 01 2021 09:39:27
root / root
0755
debconf-communicate
0.594 KB
October 01 2021 09:39:27
root / root
0755
debconf-copydb
1.679 KB
October 01 2021 09:39:27
root / root
0755
debconf-escape
0.632 KB
October 01 2021 09:39:27
root / root
0755
debconf-set-selections
2.866 KB
October 01 2021 09:39:27
root / root
0755
debconf-show
1.784 KB
October 01 2021 09:39:27
root / root
0755
debianbts
0.403 KB
December 31 2018 14:34:02
root / root
0755
delpart
26.078 KB
April 06 2024 22:33:55
root / root
0755
delv
44.828 KB
May 17 2024 15:43:53
root / root
0755
devdump
167.977 KB
July 21 2014 23:56:34
root / root
0755
df
91.547 KB
February 28 2019 15:30:31
root / root
0755
dh_autotools-dev_restoreconfig
1.793 KB
February 24 2018 16:00:57
root / root
0755
dh_autotools-dev_updateconfig
1.806 KB
February 24 2018 16:00:57
root / root
0755
dh_bash-completion
2.389 KB
February 11 2019 23:36:02
root / root
0755
dh_installxmlcatalogs
9.223 KB
February 27 2019 00:18:49
root / root
0755
dh_python2
1.031 KB
March 04 2019 15:48:56
root / root
0755
diff
215.281 KB
April 08 2019 12:04:00
root / root
0755
diff3
66.844 KB
April 08 2019 12:04:00
root / root
0755
dig
146.508 KB
May 17 2024 15:43:53
root / root
0755
dir
135.602 KB
February 28 2019 15:30:31
root / root
0755
dircolors
46.664 KB
February 28 2019 15:30:31
root / root
0755
dirname
34.594 KB
February 28 2019 15:30:31
root / root
0755
dirsplit
16.741 KB
November 25 2006 23:13:29
root / root
0755
dmesg
82.313 KB
April 06 2024 22:33:55
root / root
0755
dnsdomainname
26.07 KB
September 27 2018 08:45:17
root / root
0755
dnstap-read
18.008 KB
May 17 2024 15:43:53
root / root
0755
domainname
26.07 KB
September 27 2018 08:45:17
root / root
0755
dpkg
298.531 KB
May 24 2022 11:40:09
root / root
0755
dpkg-architecture
12.551 KB
May 24 2022 11:40:09
root / root
0755
dpkg-buildflags
7.388 KB
May 24 2022 11:40:09
root / root
0755
dpkg-buildpackage
29.893 KB
May 24 2022 11:40:09
root / root
0755
dpkg-checkbuilddeps
7.445 KB
May 24 2022 11:40:09
root / root
0755
dpkg-deb
162.383 KB
May 24 2022 11:40:09
root / root
0755
dpkg-distaddfile
2.717 KB
May 24 2022 11:40:09
root / root
0755
dpkg-divert
150.438 KB
May 24 2022 11:40:09
root / root
0755
dpkg-genbuildinfo
16.401 KB
May 24 2022 11:40:09
root / root
0755
dpkg-genchanges
17.082 KB
May 24 2022 11:40:09
root / root
0755
dpkg-gencontrol
13.823 KB
May 24 2022 11:40:09
root / root
0755
dpkg-gensymbols
10.646 KB
May 24 2022 11:40:09
root / root
0755
dpkg-maintscript-helper
20.033 KB
May 24 2022 11:40:09
root / root
0755
dpkg-mergechangelogs
8.347 KB
May 24 2022 11:40:09
root / root
0755
dpkg-name
6.63 KB
May 24 2022 11:40:09
root / root
0755
dpkg-parsechangelog
4.46 KB
May 24 2022 11:40:09
root / root
0755
dpkg-query
158.43 KB
May 24 2022 11:40:09
root / root
0755
dpkg-scanpackages
8.494 KB
May 24 2022 11:40:09
root / root
0755
dpkg-scansources
8.952 KB
May 24 2022 11:40:09
root / root
0755
dpkg-shlibdeps
30.68 KB
May 24 2022 11:40:09
root / root
0755
dpkg-source
22.482 KB
May 24 2022 11:40:09
root / root
0755
dpkg-split
122.336 KB
May 24 2022 11:40:09
root / root
0755
dpkg-statoverride
62.117 KB
May 24 2022 11:40:09
root / root
0755
dpkg-trigger
78.336 KB
May 24 2022 11:40:09
root / root
0755
dpkg-vendor
3.186 KB
May 24 2022 11:40:09
root / root
0755
du
107.094 KB
February 28 2019 15:30:31
root / root
0755
dwp
2.74 MB
March 21 2019 14:49:23
root / root
0755
ec2metadata
7.126 KB
July 21 2016 18:23:53
root / root
0755
echo
38.594 KB
February 28 2019 15:30:31
root / root
0755
edit
17.735 KB
February 09 2019 12:32:33
root / root
0755
editor
240.391 KB
June 11 2024 18:30:35
root / root
0755
egrep
0.027 KB
January 07 2019 15:04:36
root / root
0755
elfedit
38.836 KB
March 21 2019 14:49:23
root / root
0755
enc2xs
41.124 KB
July 21 2020 19:27:00
root / root
0755
encguess
2.994 KB
July 21 2020 19:27:00
root / root
0755
env
42.656 KB
February 28 2019 15:30:31
root / root
0755
envsubst
42.641 KB
November 10 2018 17:34:46
root / root
0755
eqn
201.188 KB
March 19 2021 10:36:25
root / root
0755
ex
2.58 MB
September 27 2023 19:47:00
root / root
0755
expand
42.688 KB
February 28 2019 15:30:31
root / root
0755
expiry
30.273 KB
July 27 2018 08:07:37
root / shadow
2755
expr
50.719 KB
February 28 2019 15:30:31
root / root
0755
factor
74.75 KB
February 28 2019 15:30:31
root / root
0755
faillog
22.289 KB
July 27 2018 08:07:37
root / root
0755
fallocate
30.078 KB
April 06 2024 22:33:55
root / root
0755
false
34.594 KB
February 28 2019 15:30:31
root / root
0755
fgrep
0.027 KB
January 07 2019 15:04:36
root / root
0755
filan
83.781 KB
November 19 2017 13:56:10
root / root
0755
file
26.313 KB
January 25 2021 21:40:17
root / root
0755
fincore
30.125 KB
April 06 2024 22:33:55
root / root
0755
find
308.5 KB
February 16 2019 12:14:53
root / root
0755
findmnt
67.266 KB
April 06 2024 22:33:55
root / root
0755
flock
34.156 KB
April 06 2024 22:33:55
root / root
0755
fmt
42.656 KB
February 28 2019 15:30:31
root / root
0755
fold
38.656 KB
February 28 2019 15:30:31
root / root
0755
free
18.078 KB
May 31 2018 09:42:46
root / root
0755
from
10.242 KB
May 04 2018 12:24:31
root / root
0755
funzip
22.258 KB
September 22 2022 16:25:09
root / root
0755
fuser
39.625 KB
August 16 2021 09:17:53
root / root
0755
futurize
0.375 KB
January 30 2019 20:47:52
root / root
0755
g++
1.05 MB
April 06 2019 14:44:55
root / root
0755
g++-8
1.05 MB
April 06 2019 14:44:55
root / root
0755
gapplication
22.07 KB
May 10 2024 14:33:34
root / root
0755
gcc
1.05 MB
April 06 2019 14:44:55
root / root
0755
gcc-8
1.05 MB
April 06 2019 14:44:55
root / root
0755
gcc-ar
34.469 KB
April 06 2019 14:44:55
root / root
0755
gcc-ar-8
34.469 KB
April 06 2019 14:44:55
root / root
0755
gcc-nm
34.469 KB
April 06 2019 14:44:55
root / root
0755
gcc-nm-8
34.469 KB
April 06 2019 14:44:55
root / root
0755
gcc-ranlib
34.469 KB
April 06 2019 14:44:55
root / root
0755
gcc-ranlib-8
34.469 KB
April 06 2019 14:44:55
root / root
0755
gcov
672.086 KB
April 06 2019 14:44:55
root / root
0755
gcov-8
672.086 KB
April 06 2019 14:44:55
root / root
0755
gcov-dump
511.953 KB
April 06 2019 14:44:55
root / root
0755
gcov-dump-8
511.953 KB
April 06 2019 14:44:55
root / root
0755
gcov-tool
548.016 KB
April 06 2019 14:44:55
root / root
0755
gcov-tool-8
548.016 KB
April 06 2019 14:44:55
root / root
0755
gdbus
50.078 KB
May 10 2024 14:33:34
root / root
0755
gencat
26.602 KB
June 29 2024 10:27:34
root / root
0755
genisoimage
619.008 KB
July 21 2014 23:56:34
root / root
0755
geqn
201.188 KB
March 19 2021 10:36:25
root / root
0755
getconf
34.367 KB
June 29 2024 10:27:34
root / root
0755
geteltorito
6.064 KB
July 21 2014 23:56:34
root / root
0755
getent
35.344 KB
June 29 2024 10:27:34
root / root
0755
getfacl
30.617 KB
March 01 2019 22:22:21
root / root
0755
getopt
22.07 KB
April 06 2024 22:33:55
root / root
0755
gettext
42.617 KB
November 10 2018 17:34:46
root / root
0755
gettext.sh
4.521 KB
November 10 2018 17:34:46
root / root
0755
gio
86.086 KB
May 10 2024 14:33:34
root / root
0755
gio-querymodules
13.992 KB
May 10 2024 14:33:34
root / root
0755
glib-compile-schemas
46.07 KB
May 10 2024 14:33:34
root / root
0755
gold
2.97 MB
March 21 2019 14:49:23
root / root
0755
gonit
8.52 MB
May 18 2021 09:22:15
root / root
0755
gpasswd
82.047 KB
July 27 2018 08:07:37
root / root
4755
gpgv
434.992 KB
July 01 2022 16:06:43
root / root
0755
gpic
208.031 KB
March 19 2021 10:36:25
root / root
0755
gprof
96.391 KB
March 21 2019 14:49:23
root / root
0755
grep
194.313 KB
January 07 2019 15:04:36
root / root
0755
gresource
21.992 KB
May 10 2024 14:33:34
root / root
0755
groff
117.219 KB
March 19 2021 10:36:25
root / root
0755
grog
2.711 KB
March 19 2021 10:36:25
root / root
0755
grops
177.625 KB
March 19 2021 10:36:25
root / root
0755
grotty
129.25 KB
March 19 2021 10:36:25
root / root
0755
groups
38.656 KB
February 28 2019 15:30:31
root / root
0755
growpart
20.926 KB
July 21 2016 18:23:53
root / root
0755
grub-editenv
369.961 KB
October 02 2023 14:11:34
root / root
0755
grub-file
801.211 KB
October 02 2023 14:11:34
root / root
0755
grub-fstest
922.898 KB
October 02 2023 14:11:34
root / root
0755
grub-glue-efi
244.773 KB
October 02 2023 14:11:34
root / root
0755
grub-kbdcomp
1.642 KB
October 02 2023 14:11:34
root / root
0755
grub-menulst2cfg
228.852 KB
October 02 2023 14:11:34
root / root
0755
grub-mkfont
269.461 KB
October 02 2023 14:11:34
root / root
0755
grub-mkimage
349.961 KB
October 02 2023 14:11:34
root / root
0755
grub-mklayout
249.086 KB
October 02 2023 14:11:34
root / root
0755
grub-mknetdir
402.758 KB
October 02 2023 14:11:34
root / root
0755
grub-mkpasswd-pbkdf2
249.148 KB
October 02 2023 14:11:34
root / root
0755
grub-mkrelpath
240.492 KB
October 02 2023 14:11:34
root / root
0755
grub-mkrescue
979.633 KB
October 02 2023 14:11:34
root / root
0755
grub-mkstandalone
487.086 KB
October 02 2023 14:11:34
root / root
0755
grub-mount
745.852 KB
October 02 2023 14:11:34
root / root
0755
grub-render-label
817.773 KB
October 02 2023 14:11:34
root / root
0755
grub-script-check
264.617 KB
October 02 2023 14:11:34
root / root
0755
grub-syslinux2cfg
766.289 KB
October 02 2023 14:11:34
root / root
0755
gsettings
30.07 KB
May 10 2024 14:33:34
root / root
0755
gtbl
138.195 KB
March 19 2021 10:36:25
root / root
0755
gunzip
2.29 KB
April 15 2022 18:16:55
root / root
0755
gzexe
6.295 KB
April 15 2022 18:16:55
root / root
0755
gzip
95.75 KB
April 15 2022 18:16:55
root / root
0755
h2ph
28.539 KB
July 21 2020 19:27:00
root / root
0755
h2xs
59.439 KB
July 21 2020 19:27:00
root / root
0755
hd
26.547 KB
May 04 2018 12:24:31
root / root
0755
head
46.719 KB
February 28 2019 15:30:31
root / root
0755
helpztags
2.455 KB
September 27 2023 19:35:23
root / root
0755
hexdump
26.547 KB
May 04 2018 12:24:31
root / root
0755
host
126.633 KB
May 17 2024 15:43:53
root / root
0755
hostid
34.594 KB
February 28 2019 15:30:31
root / root
0755
hostname
26.07 KB
September 27 2018 08:45:17
root / root
0755
hostnamectl
26.07 KB
June 29 2023 13:57:02
root / root
0755
i386
22.344 KB
April 06 2024 22:33:55
root / root
0755
iconv
59.008 KB
June 29 2024 10:27:34
root / root
0755
id
42.781 KB
February 28 2019 15:30:31
root / root
0755
ifnames
4.033 KB
August 20 2017 18:17:16
root / root
0755
infocmp
62.07 KB
December 03 2023 15:31:37
root / root
0755
infotocap
86.109 KB
December 03 2023 15:31:37
root / root
0755
install
151.602 KB
February 28 2019 15:30:31
root / root
0755
instmodsh
4.268 KB
July 21 2020 19:27:00
root / root
0755
ionice
30.078 KB
April 06 2024 22:33:55
root / root
0755
ip
574.727 KB
December 03 2020 18:42:49
root / root
0755
ipcmk
30.141 KB
April 06 2024 22:33:55
root / root
0755
ipcrm
30.078 KB
April 06 2024 22:33:55
root / root
0755
ipcs
66.078 KB
April 06 2024 22:33:55
root / root
0755
iptables-xml
100.68 KB
March 01 2019 12:28:35
root / root
0755
ischroot
14.234 KB
January 21 2019 21:12:11
root / root
0755
isodump
167.977 KB
July 21 2014 23:56:34
root / root
0755
isoinfo
335.227 KB
July 21 2014 23:56:34
root / root
0755
isovfy
167.945 KB
July 21 2014 23:56:34
root / root
0755
join
50.75 KB
February 28 2019 15:30:31
root / root
0755
journalctl
66.086 KB
June 29 2023 13:57:02
root / root
0755
json_pp
4.276 KB
July 21 2020 19:27:00
root / root
0755
jsondiff
0.994 KB
March 03 2018 21:11:27
root / root
0755
jsonpatch
3.575 KB
March 03 2018 21:11:27
root / root
0755
jsonpointer
1.311 KB
April 30 2016 22:01:28
root / root
0755
jsonschema
0.389 KB
September 07 2018 07:03:51
root / root
0755
kernel-install
4.53 KB
February 14 2019 10:11:58
root / root
0755
kill
26.078 KB
May 31 2018 09:42:46
root / root
0755
killall
31.719 KB
August 16 2021 09:17:53
root / root
0755
kmod
162.18 KB
February 09 2019 23:00:31
root / root
0755
last
46.078 KB
April 06 2024 22:33:55
root / root
0755
lastb
46.078 KB
April 06 2024 22:33:55
root / root
0755
lastlog
22.07 KB
July 27 2018 08:07:37
root / root
0755
lcf
7.604 KB
December 14 2018 08:51:14
root / root
0755
ld
1.7 MB
March 21 2019 14:49:23
root / root
0755
ld.bfd
1.7 MB
March 21 2019 14:49:23
root / root
0755
ld.gold
2.97 MB
March 21 2019 14:49:23
root / root
0755
ldd
5.27 KB
June 29 2024 10:27:34
root / root
0755
less
166.758 KB
May 27 2024 17:20:40
root / root
0755
lessecho
14.016 KB
May 27 2024 17:20:40
root / root
0755
lessfile
8.363 KB
May 27 2024 17:20:40
root / root
0755
lesskey
23.391 KB
May 27 2024 17:20:40
root / root
0755
lesspipe
8.363 KB
May 27 2024 17:20:40
root / root
0755
letsencrypt
0.376 KB
December 05 2020 02:33:11
root / root
0755
lexgrog
94.57 KB
February 01 2024 13:35:20
root / root
0755
lft
2.435 KB
August 29 2016 15:45:51
root / root
0755
lft.db
2.435 KB
August 29 2016 15:45:51
root / root
0755
libnetcfg
15.405 KB
July 21 2020 19:27:00
root / root
0755
libtoolize
128.258 KB
January 28 2019 09:07:40
root / root
0755
link
34.594 KB
February 28 2019 15:30:31
root / root
0755
linux-check-removal
4.564 KB
September 05 2018 17:52:35
root / root
0755
linux-update-symlinks
6.172 KB
June 05 2016 01:13:24
root / root
0755
linux-version
2.633 KB
August 11 2015 15:45:25
root / root
0755
linux32
22.344 KB
April 06 2024 22:33:55
root / root
0755
linux64
22.344 KB
April 06 2024 22:33:55
root / root
0755
ln
66.945 KB
February 28 2019 15:30:31
root / root
0755
lnstat
22.742 KB
December 03 2020 18:42:49
root / root
0755
locale
54.039 KB
June 29 2024 10:27:34
root / root
0755
localectl
26.07 KB
June 29 2023 13:57:02
root / root
0755
localedef
299.75 KB
June 29 2024 10:27:34
root / root
0755
logger
46.672 KB
April 06 2024 22:33:55
root / root
0755
login
55.43 KB
July 27 2018 08:07:37
root / root
0755
loginctl
54.18 KB
June 29 2023 13:57:02
root / root
0755
logname
34.594 KB
February 28 2019 15:30:31
root / root
0755
look
10.492 KB
May 04 2018 12:24:31
root / root
0755
lorder
2.817 KB
May 04 2018 12:24:31
root / root
0755
ls
135.602 KB
February 28 2019 15:30:31
root / root
0755
lsattr
14 KB
January 10 2020 01:19:57
root / root
0755
lsb_release
3.553 KB
May 14 2019 06:50:39
root / root
0755
lsblk
106.078 KB
April 06 2024 22:33:55
root / root
0755
lscpu
86.078 KB
April 06 2024 22:33:55
root / root
0755
lsinitramfs
0.689 KB
February 06 2019 03:55:08
root / root
0755
lsipc
90.078 KB
April 06 2024 22:33:55
root / root
0755
lslocks
34.406 KB
April 06 2024 22:33:55
root / root
0755
lslogins
66.078 KB
April 06 2024 22:33:55
root / root
0755
lsmem
62.078 KB
April 06 2024 22:33:55
root / root
0755
lsmod
162.18 KB
February 09 2019 23:00:31
root / root
0755
lsns
50.078 KB
April 06 2024 22:33:55
root / root
0755
lspci
80.313 KB
November 30 2016 06:53:07
root / root
0755
lzcat
79.289 KB
April 11 2022 14:51:17
root / root
0755
lzcmp
6.477 KB
April 11 2022 14:51:17
root / root
0755
lzdiff
6.477 KB
April 11 2022 14:51:17
root / root
0755
lzegrep
5.764 KB
April 11 2022 14:51:17
root / root
0755
lzfgrep
5.764 KB
April 11 2022 14:51:17
root / root
0755
lzgrep
5.764 KB
April 11 2022 14:51:17
root / root
0755
lzless
1.76 KB
April 11 2022 14:51:17
root / root
0755
lzma
79.289 KB
April 11 2022 14:51:17
root / root
0755
lzmainfo
14.313 KB
April 11 2022 14:51:17
root / root
0755
lzmore
2.11 KB
April 11 2022 14:51:17
root / root
0755
m4
159.18 KB
December 01 2018 14:46:54
root / root
0755
make
226.594 KB
July 28 2018 10:07:31
root / root
0755
make-first-existing-target
4.79 KB
July 28 2018 10:07:31
root / root
0755
man
112.5 KB
February 01 2024 13:35:20
root / root
0755
mandb
134.719 KB
February 01 2024 13:35:20
root / root
0755
manpath
34.469 KB
February 01 2024 13:35:20
root / root
0755
mawk
119.117 KB
March 23 2012 20:15:00
root / root
0755
mcookie
34.141 KB
April 06 2024 22:33:55
root / root
0755
md5sum
46.719 KB
February 28 2019 15:30:31
root / root
0755
md5sum.textutils
46.719 KB
February 28 2019 15:30:31
root / root
0755
mdig
46.094 KB
May 17 2024 15:43:53
root / root
0755
mesg
14.07 KB
April 06 2024 22:33:55
root / root
0755
mkdir
87 KB
February 28 2019 15:30:31
root / root
0755
mkfifo
62.906 KB
February 28 2019 15:30:31
root / root
0755
mknod
66.938 KB
February 28 2019 15:30:31
root / root
0755
mktemp
42.781 KB
February 28 2019 15:30:31
root / root
0755
mkzftree
22.68 KB
July 21 2014 23:56:34
root / root
0755
monit
8.52 MB
May 18 2021 09:22:15
root / root
0755
more
42 KB
April 06 2024 22:33:55
root / root
0755
mount
46.078 KB
April 06 2024 22:33:55
root / root
4755
mount-image-callback
11.244 KB
July 21 2016 18:23:53
root / root
0755
mountpoint
14.07 KB
April 06 2024 22:33:55
root / root
0755
mt
83.32 KB
June 04 2023 15:01:54
root / root
0755
mt-gnu
83.32 KB
June 04 2023 15:01:54
root / root
0755
mtrace
6.318 KB
June 29 2024 10:27:34
root / root
0755
mv
135.477 KB
February 28 2019 15:30:31
root / root
0755
namei
34.078 KB
April 06 2024 22:33:55
root / root
0755
nano
240.391 KB
June 11 2024 18:30:35
root / root
0755
nawk
119.117 KB
March 23 2012 20:15:00
root / root
0755
nc
42.484 KB
February 12 2019 11:31:51
root / root
0755
nc.openbsd
42.484 KB
February 12 2019 11:31:51
root / root
0755
ncal
29.148 KB
May 04 2018 12:24:31
root / root
0755
neqn
0.892 KB
March 19 2021 10:36:25
root / root
0755
netcat
42.484 KB
February 12 2019 11:31:51
root / root
0755
netstat
151.461 KB
September 24 2018 19:08:57
root / root
0755
networkctl
46.07 KB
June 29 2023 13:57:02
root / root
0755
newgrp
43.398 KB
July 27 2018 08:07:37
root / root
4755
ngettext
42.633 KB
November 10 2018 17:34:46
root / root
0755
nice
38.625 KB
February 28 2019 15:30:31
root / root
0755
nisdomainname
26.07 KB
September 27 2018 08:45:17
root / root
0755
nl
42.781 KB
February 28 2019 15:30:31
root / root
0755
nm
47.906 KB
March 21 2019 14:49:23
root / root
0755
nohup
38.656 KB
February 28 2019 15:30:31
root / root
0755
nproc
38.656 KB
February 28 2019 15:30:31
root / root
0755
nroff
3.216 KB
March 19 2021 10:36:25
root / root
0755
nsenter
34.281 KB
April 06 2024 22:33:55
root / root
0755
nslookup
134.508 KB
May 17 2024 15:43:53
root / root
0755
nstat
79.141 KB
December 03 2020 18:42:49
root / root
0755
nsupdate
70.016 KB
May 17 2024 15:43:53
root / root
0755
numfmt
62.813 KB
February 28 2019 15:30:31
root / root
0755
objcopy
175.422 KB
March 21 2019 14:49:23
root / root
0755
objdump
345.555 KB
March 21 2019 14:49:23
root / root
0755
od
70.781 KB
February 28 2019 15:30:31
root / root
0755
openssl
719.523 KB
August 15 2023 19:14:44
root / root
0755
pager
166.758 KB
May 27 2024 17:20:40
root / root
0755
partx
106.078 KB
April 06 2024 22:33:55
root / root
0755
passwd
62.242 KB
July 27 2018 08:07:37
root / root
4755
paste
38.656 KB
February 28 2019 15:30:31
root / root
0755
pasteurize
0.379 KB
January 30 2019 20:47:52
root / root
0755
patch
183.438 KB
July 26 2019 10:58:07
root / root
0755
pathchk
38.625 KB
February 28 2019 15:30:31
root / root
0755
pbr
0.148 KB
December 30 2018 04:26:59
root / root
0755
pcimodules
14.586 KB
November 30 2016 06:53:07
root / root
0755
pdb
45.018 KB
March 23 2024 18:55:36
root / root
0755
pdb2
45.018 KB
March 23 2024 18:55:36
root / root
0755
pdb2.7
45.018 KB
March 23 2024 18:55:36
root / root
0755
pdb3
61.076 KB
March 23 2024 16:12:05
root / root
0755
pdb3.7
61.076 KB
March 23 2024 16:12:05
root / root
0755
peekfd
14.281 KB
August 16 2021 09:17:53
root / root
0755
perf
0.516 KB
July 20 2018 01:35:21
root / root
0755
perl
3.05 MB
July 21 2020 19:27:00
root / root
0755
perl5.28-x86_64-linux-gnu
14.172 KB
July 21 2020 19:27:00
root / root
0755
perl5.28.1
3.05 MB
July 21 2020 19:27:00
root / root
0755
perlbug
45.279 KB
July 21 2020 19:27:00
root / root
0755
perldoc
0.122 KB
July 21 2020 19:27:00
root / root
0755
perlivp
10.609 KB
July 21 2020 19:27:00
root / root
0755
perlthanks
45.279 KB
July 21 2020 19:27:00
root / root
0755
pgrep
26.086 KB
May 31 2018 09:42:46
root / root
0755
pic
208.031 KB
March 19 2021 10:36:25
root / root
0755
pico
240.391 KB
June 11 2024 18:30:35
root / root
0755
piconv
8.161 KB
July 21 2020 19:27:00
root / root
0755
pidof
26.609 KB
February 14 2019 20:33:13
root / root
0755
ping
67.742 KB
March 08 2021 19:46:59
root / root
0755
ping4
67.742 KB
March 08 2021 19:46:59
root / root
0755
ping6
67.742 KB
March 08 2021 19:46:59
root / root
0755
pinky
42.813 KB
February 28 2019 15:30:31
root / root
0755
pkaction
14.313 KB
January 13 2022 19:35:27
root / root
0755
pkcheck
22.656 KB
January 13 2022 19:35:27
root / root
0755
pkcon
71.711 KB
March 02 2019 21:02:38
root / root
0755
pkexec
22.75 KB
January 13 2022 19:35:27
root / root
4755
pkill
26.086 KB
May 31 2018 09:42:46
root / root
0755
pkmon
22.492 KB
March 02 2019 21:02:38
root / root
0755
pkttyagent
18.367 KB
January 13 2022 19:35:27
root / root
0755
pl2pm
4.427 KB
July 21 2020 19:27:00
root / root
0755
pldd
22.57 KB
June 29 2024 10:27:34
root / root
0755
pmap
30.086 KB
May 31 2018 09:42:46
root / root
0755
pod2html
4.037 KB
July 21 2020 19:27:00
root / root
0755
pod2man
14.856 KB
July 21 2020 19:27:00
root / root
0755
pod2text
10.85 KB
July 21 2020 19:27:00
root / root
0755
pod2usage
3.855 KB
July 21 2020 19:27:00
root / root
0755
podchecker
3.572 KB
July 21 2020 19:27:00
root / root
0755
podselect
2.468 KB
July 21 2020 19:27:00
root / root
0755
pr
74.938 KB
February 28 2019 15:30:31
root / root
0755
preconv
66.195 KB
March 19 2021 10:36:25
root / root
0755
print
17.735 KB
February 09 2019 12:32:33
root / root
0755
printenv
34.594 KB
February 28 2019 15:30:31
root / root
0755
printerbanner
22.227 KB
May 04 2018 12:24:31
root / root
0755
printf
54.688 KB
February 28 2019 15:30:31
root / root
0755
prlimit
38.594 KB
April 06 2024 22:33:55
root / root
0755
procan
71.68 KB
November 19 2017 13:56:10
root / root
0755
prove
13.335 KB
July 21 2020 19:27:00
root / root
0755
prtstat
18.359 KB
August 16 2021 09:17:53
root / root
0755
ps
130.305 KB
May 31 2018 09:42:46
root / root
0755
pslog
14.227 KB
August 16 2021 09:17:53
root / root
0755
pstree
31.484 KB
August 16 2021 09:17:53
root / root
0755
pstree.x11
31.484 KB
August 16 2021 09:17:53
root / root
0755
ptar
3.466 KB
July 21 2020 19:27:00
root / root
0755
ptardiff
2.566 KB
July 21 2020 19:27:00
root / root
0755
ptargrep
4.289 KB
July 21 2020 19:27:00
root / root
0755
ptx
74.906 KB
February 28 2019 15:30:31
root / root
0755
pwd
38.688 KB
February 28 2019 15:30:31
root / root
0755
pwdx
10.07 KB
May 31 2018 09:42:46
root / root
0755
py3clean
7.623 KB
March 26 2019 10:25:14
root / root
0755
py3compile
11.829 KB
March 26 2019 10:25:14
root / root
0755
py3rsa-decrypt
0.367 KB
December 04 2018 06:46:41
root / root
0755
py3rsa-encrypt
0.367 KB
December 04 2018 06:46:41
root / root
0755
py3rsa-keygen
0.365 KB
December 04 2018 06:46:41
root / root
0755
py3rsa-priv2pub
0.369 KB
December 04 2018 06:46:41
root / root
0755
py3rsa-sign
0.361 KB
December 04 2018 06:46:41
root / root
0755
py3rsa-verify
0.365 KB
December 04 2018 06:46:41
root / root
0755
py3versions
11.442 KB
March 26 2019 10:25:14
root / root
0755
pyclean
4.027 KB
March 04 2019 15:48:56
root / root
0755
pycompile
11.616 KB
March 04 2019 15:48:56
root / root
0755
pydoc
0.077 KB
March 23 2024 18:55:36
root / root
0755
pydoc2
0.077 KB
March 23 2024 18:55:36
root / root
0755
pydoc2.7
0.077 KB
March 23 2024 18:55:36
root / root
0755
pydoc3
0.077 KB
March 23 2024 16:12:05
root / root
0755
pydoc3.7
0.077 KB
March 23 2024 16:12:05
root / root
0755
pygettext
21.564 KB
March 23 2024 18:55:36
root / root
0755
pygettext2
21.564 KB
March 23 2024 18:55:36
root / root
0755
pygettext2.7
21.564 KB
March 23 2024 18:55:36
root / root
0755
pygettext3
21.042 KB
March 23 2024 16:12:05
root / root
0755
pygettext3.7
21.042 KB
March 23 2024 16:12:05
root / root
0755
pyjwt3
0.363 KB
December 13 2018 01:09:40
root / root
0755
python
3.51 MB
March 23 2024 18:55:36
root / root
0755
python2
3.51 MB
March 23 2024 18:55:36
root / root
0755
python2.7
3.51 MB
March 23 2024 18:55:36
root / root
0755
python3
4.65 MB
March 23 2024 16:12:05
root / root
0755
python3-futurize
0.375 KB
January 30 2019 20:47:52
root / root
0755
python3-jsondiff
0.994 KB
March 03 2018 21:11:27
root / root
0755
python3-jsonpatch
3.575 KB
March 03 2018 21:11:27
root / root
0755
python3-jsonpointer
1.311 KB
April 30 2016 22:01:28
root / root
0755
python3-jsonschema
0.389 KB
September 07 2018 07:03:51
root / root
0755
python3-pasteurize
0.379 KB
January 30 2019 20:47:52
root / root
0755
python3-pbr
0.148 KB
December 30 2018 04:26:59
root / root
0755
python3.7
4.65 MB
March 23 2024 16:12:05
root / root
0755
python3.7m
4.65 MB
March 23 2024 16:12:05
root / root
0755
python3m
4.65 MB
March 23 2024 16:12:05
root / root
0755
pyversions
14.758 KB
March 04 2019 15:48:56
root / root
0755
qemu-img
1.79 MB
March 11 2024 14:57:08
root / root
0755
qemu-io
1.75 MB
March 11 2024 14:57:08
root / root
0755
qemu-nbd
1.75 MB
March 11 2024 14:57:08
root / root
0755
querybts
10.745 KB
November 25 2023 20:46:39
root / root
0755
ranlib
63.102 KB
March 21 2019 14:49:23
root / root
0755
rbash
1.11 MB
April 18 2019 04:12:36
root / root
0755
rcp
98.141 KB
December 24 2023 20:39:13
root / root
0755
rdma
107.156 KB
December 03 2020 18:42:49
root / root
0755
readelf
583.063 KB
March 21 2019 14:49:23
root / root
0755
readlink
46.656 KB
February 28 2019 15:30:31
root / root
0755
realpath
46.688 KB
February 28 2019 15:30:31
root / root
0755
rename.ul
22.07 KB
April 06 2024 22:33:55
root / root
0755
renice
14.07 KB
April 06 2024 22:33:55
root / root
0755
reportbug
105.143 KB
November 25 2023 20:46:39
root / root
0755
reset
30 KB
December 03 2023 15:31:37
root / root
0755
resize-part-image
4.245 KB
July 21 2016 18:23:53
root / root
0755
resizepart
58.078 KB
April 06 2024 22:33:55
root / root
0755
resolvectl
114.219 KB
June 29 2023 13:57:02
root / root
0755
rev
14.07 KB
April 06 2024 22:33:55
root / root
0755
rgrep
0.029 KB
August 04 2017 13:57:24
root / root
0755
rlogin
714.789 KB
December 24 2023 20:39:13
root / root
0755
rm
66.813 KB
February 28 2019 15:30:31
root / root
0755
rmdir
46.656 KB
February 28 2019 15:30:31
root / root
0755
rnano
240.391 KB
June 11 2024 18:30:35
root / root
0755
routef
0.203 KB
December 03 2020 18:42:49
root / root
0755
routel
1.617 KB
December 03 2020 18:42:49
root / root
0755
rpcgen
90.977 KB
June 29 2024 10:27:34
root / root
0755
rsh
714.789 KB
December 24 2023 20:39:13
root / root
0755
rst-buildhtml
9.729 KB
February 23 2019 18:14:53
root / root
0755
rst2html
0.58 KB
February 23 2019 18:14:53
root / root
0755
rst2html4
0.697 KB
February 23 2019 18:14:53
root / root
0755
rst2html5
1.112 KB
February 23 2019 18:14:53
root / root
0755
rst2latex
0.772 KB
February 23 2019 18:14:53
root / root
0755
rst2man
0.586 KB
February 23 2019 18:14:53
root / root
0755
rst2odt
0.746 KB
February 23 2019 18:14:53
root / root
0755
rst2odt_prepstyles
2.26 KB
February 23 2019 18:14:53
root / root
0755
rst2pseudoxml
0.587 KB
February 23 2019 18:14:53
root / root
0755
rst2s5
0.622 KB
February 23 2019 18:14:53
root / root
0755
rst2xetex
0.851 KB
February 23 2019 18:14:53
root / root
0755
rst2xml
0.588 KB
February 23 2019 18:14:53
root / root
0755
rstpep2html
0.654 KB
February 23 2019 18:14:53
root / root
0755
rtstat
22.742 KB
December 03 2020 18:42:49
root / root
0755
run-mailcap
17.735 KB
February 09 2019 12:32:33
root / root
0755
run-parts
22.766 KB
January 21 2019 21:12:11
root / root
0755
runcon
38.719 KB
February 28 2019 15:30:31
root / root
0755
rview
2.58 MB
September 27 2023 19:47:00
root / root
0755
rvim
2.58 MB
September 27 2023 19:47:00
root / root
0755
savelog
10.224 KB
January 21 2019 21:12:11
root / root
0755
scp
98.141 KB
December 24 2023 20:39:13
root / root
0755
screen
459.008 KB
February 20 2021 20:59:38
root / root
0755
script
50.078 KB
April 06 2024 22:33:55
root / root
0755
scriptreplay
30.078 KB
April 06 2024 22:33:55
root / root
0755
sdiff
50.766 KB
April 08 2019 12:04:00
root / root
0755
sed
119.359 KB
December 22 2018 14:24:04
root / root
0755
see
17.735 KB
February 09 2019 12:32:33
root / root
0755
select-editor
2.385 KB
March 12 2018 10:17:53
root / root
0755
sensible-browser
1.181 KB
March 12 2018 10:17:53
root / root
0755
sensible-editor
1.083 KB
March 12 2018 10:17:53
root / root
0755
sensible-pager
0.423 KB
March 12 2018 10:17:53
root / root
0755
seq
50.688 KB
February 28 2019 15:30:31
root / root
0755
setarch
22.344 KB
April 06 2024 22:33:55
root / root
0755
setfacl
38.68 KB
March 01 2019 22:22:21
root / root
0755
setpci
22.539 KB
November 30 2016 06:53:07
root / root
0755
setpriv
42.078 KB
April 06 2024 22:33:55
root / root
0755
setsid
14.07 KB
April 06 2024 22:33:55
root / root
0755
setterm
42.078 KB
April 06 2024 22:33:55
root / root
0755
sftp
150.352 KB
December 24 2023 20:39:13
root / root
0755
sg
43.398 KB
July 27 2018 08:07:37
root / root
4755
sh
118.617 KB
January 17 2019 19:08:32
root / root
0755
sha1sum
50.719 KB
February 28 2019 15:30:31
root / root
0755
sha224sum
54.719 KB
February 28 2019 15:30:31
root / root
0755
sha256sum
54.719 KB
February 28 2019 15:30:31
root / root
0755
sha384sum
62.719 KB
February 28 2019 15:30:31
root / root
0755
sha512sum
62.719 KB
February 28 2019 15:30:31
root / root
0755
shasum
9.742 KB
July 21 2020 19:27:00
root / root
0755
shred
58.938 KB
February 28 2019 15:30:31
root / root
0755
shuf
58.813 KB
February 28 2019 15:30:31
root / root
0755
size
34.969 KB
March 21 2019 14:49:23
root / root
0755
skill
26.078 KB
May 31 2018 09:42:46
root / root
0755
slabtop
18.078 KB
May 31 2018 09:42:46
root / root
0755
sleep
38.625 KB
February 28 2019 15:30:31
root / root
0755
slogin
714.789 KB
December 24 2023 20:39:13
root / root
0755
snice
26.078 KB
May 31 2018 09:42:46
root / root
0755
socat
369.43 KB
November 19 2017 13:56:10
root / root
0755
soelim
42.195 KB
March 19 2021 10:36:25
root / root
0755
sort
111.445 KB
February 28 2019 15:30:31
root / root
0755
sotruss
4.182 KB
June 29 2024 10:27:34
root / root
0755
splain
18.701 KB
July 21 2020 19:27:00
root / root
0755
split
59.32 KB
February 28 2019 15:30:31
root / root
0755
sprof
26.688 KB
June 29 2024 10:27:34
root / root
0755
ss
157.703 KB
December 03 2020 18:42:49
root / root
0755
ssh
714.789 KB
December 24 2023 20:39:13
root / root
0755
ssh-add
334.125 KB
December 24 2023 20:39:13
root / root
0755
ssh-agent
314.133 KB
December 24 2023 20:39:13
root / ssh
2755
ssh-argv0
1.422 KB
December 22 2023 20:40:01
root / root
0755
ssh-copy-id
10.408 KB
October 17 2018 00:01:20
root / root
0755
ssh-keygen
406.148 KB
December 24 2023 20:39:13
root / root
0755
ssh-keyscan
410.148 KB
December 24 2023 20:39:13
root / root
0755
stat
79.031 KB
February 28 2019 15:30:31
root / root
0755
stdbuf
50.688 KB
February 28 2019 15:30:31
root / root
0755
strings
31.133 KB
March 21 2019 14:49:23
root / root
0755
strip
175.43 KB
March 21 2019 14:49:23
root / root
0755
stty
78.781 KB
February 28 2019 15:30:31
root / root
0755
su
62.078 KB
April 06 2024 22:33:55
root / root
4755
sudo
153.508 KB
January 21 2024 20:52:36
root / root
4755
sudoedit
153.508 KB
January 21 2024 20:52:36
root / root
4755
sudoreplay
62.844 KB
January 21 2024 20:52:36
root / root
0755
sum
42.727 KB
February 28 2019 15:30:31
root / root
0755
sync
34.656 KB
February 28 2019 15:30:31
root / root
0755
systemctl
852.336 KB
June 29 2023 13:57:02
root / root
0755
systemd
1.42 MB
June 29 2023 13:57:02
root / root
0755
systemd-analyze
1.38 MB
June 29 2023 13:57:02
root / root
0755
systemd-ask-password
14.18 KB
June 29 2023 13:57:02
root / root
0755
systemd-cat
14.078 KB
June 29 2023 13:57:02
root / root
0755
systemd-cgls
18.172 KB
June 29 2023 13:57:02
root / root
0755
systemd-cgtop
38.094 KB
June 29 2023 13:57:02
root / root
0755
systemd-delta
26.07 KB
June 29 2023 13:57:02
root / root
0755
systemd-detect-virt
14.063 KB
June 29 2023 13:57:02
root / root
0755
systemd-escape
18.063 KB
June 29 2023 13:57:02
root / root
0755
systemd-hwdb
98.359 KB
June 29 2023 13:57:02
root / root
0755
systemd-id128
14.063 KB
June 29 2023 13:57:02
root / root
0755
systemd-inhibit
18.086 KB
June 29 2023 13:57:02
root / root
0755
systemd-machine-id-setup
26.164 KB
June 29 2023 13:57:02
root / root
0755
systemd-mount
46.289 KB
June 29 2023 13:57:02
root / root
0755
systemd-notify
18.07 KB
June 29 2023 13:57:02
root / root
0755
systemd-path
18.063 KB
June 29 2023 13:57:02
root / root
0755
systemd-resolve
114.219 KB
June 29 2023 13:57:02
root / root
0755
systemd-run
50.266 KB
June 29 2023 13:57:02
root / root
0755
systemd-socket-activate
26.07 KB
June 29 2023 13:57:02
root / root
0755
systemd-stdio-bridge
18.07 KB
June 29 2023 13:57:02
root / root
0755
systemd-sysusers
54.359 KB
June 29 2023 13:57:02
root / root
0755
systemd-tmpfiles
78.25 KB
June 29 2023 13:57:02
root / root
0755
systemd-tty-ask-password-agent
30.07 KB
June 29 2023 13:57:02
root / root
0755
systemd-umount
46.289 KB
June 29 2023 13:57:02
root / root
0755
tabs
17.992 KB
December 03 2023 15:31:37
root / root
0755
tac
42.719 KB
February 28 2019 15:30:31
root / root
0755
tail
70.906 KB
February 28 2019 15:30:31
root / root
0755
tar
435.117 KB
March 09 2024 18:25:46
root / root
0755
taskset
34.078 KB
April 06 2024 22:33:55
root / root
0755
tbl
138.195 KB
March 19 2021 10:36:25
root / root
0755
tee
38.719 KB
February 28 2019 15:30:31
root / root
0755
tempfile
14.102 KB
January 21 2019 21:12:11
root / root
0755
test
50.656 KB
February 28 2019 15:30:31
root / root
0755
tic
86.109 KB
December 03 2023 15:31:37
root / root
0755
timedatectl
38.07 KB
June 29 2023 13:57:02
root / root
0755
timeout
43.258 KB
February 28 2019 15:30:31
root / root
0755
tload
14.086 KB
May 31 2018 09:42:46
root / root
0755
toe
21.992 KB
December 03 2023 15:31:37
root / root
0755
top
113.891 KB
May 31 2018 09:42:46
root / root
0755
touch
94.875 KB
February 28 2019 15:30:31
root / root
0755
tput
22.023 KB
December 03 2023 15:31:37
root / root
0755
tr
50.688 KB
February 28 2019 15:30:31
root / root
0755
traceproto
2.817 KB
August 29 2016 15:45:51
root / root
0755
traceproto.db
2.817 KB
August 29 2016 15:45:51
root / root
0755
traceroute
67.156 KB
August 29 2016 15:45:51
root / root
0755
traceroute-nanog
1.58 KB
August 29 2016 15:45:51
root / root
0755
traceroute.db
67.156 KB
August 29 2016 15:45:51
root / root
0755
traceroute6
67.156 KB
August 29 2016 15:45:51
root / root
0755
traceroute6.db
67.156 KB
August 29 2016 15:45:51
root / root
0755
troff
723.594 KB
March 19 2021 10:36:25
root / root
0755
true
34.594 KB
February 28 2019 15:30:31
root / root
0755
truncate
42.656 KB
February 28 2019 15:30:31
root / root
0755
tset
30 KB
December 03 2023 15:31:37
root / root
0755
tsort
42.656 KB
February 28 2019 15:30:31
root / root
0755
tty
34.625 KB
February 28 2019 15:30:31
root / root
0755
tzselect
15.011 KB
June 29 2024 10:27:34
root / root
0755
ubuntu-cloudimg-query
8.144 KB
July 21 2016 18:23:53
root / root
0755
ucf
39.731 KB
December 14 2018 08:51:14
root / root
0755
ucfq
18.913 KB
December 14 2018 08:51:14
root / root
0755
ucfr
10.471 KB
December 14 2018 08:51:14
root / root
0755
udevadm
658.508 KB
June 29 2023 13:57:02
root / root
0755
ul
14.297 KB
May 04 2018 12:24:31
root / root
0755
umount
34.07 KB
April 06 2024 22:33:55
root / root
4755
uname
38.656 KB
February 28 2019 15:30:31
root / root
0755
unattended-upgrade
83.833 KB
June 08 2019 14:59:45
root / root
0755
unattended-upgrades
83.833 KB
June 08 2019 14:59:45
root / root
0755
uncompress
2.29 KB
April 15 2022 18:16:55
root / root
0755
unexpand
42.688 KB
February 28 2019 15:30:31
root / root
0755
uniq
50.75 KB
February 28 2019 15:30:31
root / root
0755
unlink
34.594 KB
February 28 2019 15:30:31
root / root
0755
unlzma
79.289 KB
April 11 2022 14:51:17
root / root
0755
unmkinitramfs
3.511 KB
July 31 2019 14:25:58
root / root
0755
unshare
26.273 KB
April 06 2024 22:33:55
root / root
0755
unxz
79.289 KB
April 11 2022 14:51:17
root / root
0755
unzip
178.844 KB
September 22 2022 16:25:09
root / root
0755
unzipsfx
82.664 KB
September 22 2022 16:25:09
root / root
0755
update-alternatives
54.25 KB
May 24 2022 11:40:09
root / root
0755
uptime
10.07 KB
May 31 2018 09:42:46
root / root
0755
users
34.656 KB
February 28 2019 15:30:31
root / root
0755
utmpdump
30.07 KB
April 06 2024 22:33:55
root / root
0755
uuidgen
14.07 KB
April 06 2024 22:33:55
root / root
0755
uuidparse
34.078 KB
April 06 2024 22:33:55
root / root
0755
vcs-run
6.751 KB
July 21 2016 18:23:53
root / root
0755
vdir
135.602 KB
February 28 2019 15:30:31
root / root
0755
vi
2.58 MB
September 27 2023 19:47:00
root / root
0755
view
2.58 MB
September 27 2023 19:47:00
root / root
0755
vim
2.58 MB
September 27 2023 19:47:00
root / root
0755
vim.basic
2.58 MB
September 27 2023 19:47:00
root / root
0755
vim.tiny
1.15 MB
September 27 2023 19:47:00
root / root
0755
vimdiff
2.58 MB
September 27 2023 19:47:00
root / root
0755
vimtutor
2.071 KB
September 27 2023 19:47:00
root / root
0755
vmstat
34.094 KB
May 31 2018 09:42:46
root / root
0755
w
18.07 KB
May 31 2018 09:42:46
root / root
0755
w.procps
18.07 KB
May 31 2018 09:42:46
root / root
0755
wall
34.078 KB
April 06 2024 22:33:55
root / root
0755
watch
26.414 KB
May 31 2018 09:42:46
root / root
0755
wc
46.758 KB
February 28 2019 15:30:31
root / root
0755
wdctl
34.078 KB
April 06 2024 22:33:55
root / root
0755
wget
455.563 KB
April 05 2019 13:36:38
root / root
0755
whatis
54.977 KB
February 01 2024 13:35:20
root / root
0755
whereis
30.508 KB
April 06 2024 22:33:55
root / root
0755
which
0.924 KB
January 21 2019 21:12:11
root / root
0755
whiptail
26.703 KB
September 27 2018 11:36:41
root / root
0755
who
54.813 KB
February 28 2019 15:30:31
root / root
0755
whoami
34.625 KB
February 28 2019 15:30:31
root / root
0755
write
14.391 KB
May 04 2018 12:24:31
root / tty
2755
write-mime-multipart
3.514 KB
July 21 2016 18:23:53
root / root
0755
x86_64
22.344 KB
April 06 2024 22:33:55
root / root
0755
x86_64-linux-gnu-addr2line
31.094 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-ar
63.07 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-as
872.93 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-c++filt
30.688 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-cpp
1.05 MB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-cpp-8
1.05 MB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-dwp
2.74 MB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-elfedit
38.836 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-g++
1.05 MB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-g++-8
1.05 MB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc
1.05 MB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-8
1.05 MB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-ar
34.469 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-ar-8
34.469 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-nm
34.469 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-nm-8
34.469 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-ranlib
34.469 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcc-ranlib-8
34.469 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcov
672.086 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcov-8
672.086 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcov-dump
511.953 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcov-dump-8
511.953 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcov-tool
548.016 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gcov-tool-8
548.016 KB
April 06 2019 14:44:55
root / root
0755
x86_64-linux-gnu-gold
2.97 MB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-gprof
96.391 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-ld
1.7 MB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-ld.bfd
1.7 MB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-ld.gold
2.97 MB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-nm
47.906 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-objcopy
175.422 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-objdump
345.555 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-ranlib
63.102 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-readelf
583.063 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-size
34.969 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-strings
31.133 KB
March 21 2019 14:49:23
root / root
0755
x86_64-linux-gnu-strip
175.43 KB
March 21 2019 14:49:23
root / root
0755
xargs
70.211 KB
February 16 2019 12:14:53
root / root
0755
xmlcatalog
17.992 KB
April 29 2023 19:03:02
root / root
0755
xmllint
70.82 KB
April 29 2023 19:03:02
root / root
0755
xsubpp
5.043 KB
July 21 2020 19:27:00
root / root
0755
xxd
18.117 KB
September 27 2023 19:47:00
root / root
0755
xz
79.289 KB
April 11 2022 14:51:17
root / root
0755
xzcat
79.289 KB
April 11 2022 14:51:17
root / root
0755
xzcmp
6.477 KB
April 11 2022 14:51:17
root / root
0755
xzdiff
6.477 KB
April 11 2022 14:51:17
root / root
0755
xzegrep
5.764 KB
April 11 2022 14:51:17
root / root
0755
xzfgrep
5.764 KB
April 11 2022 14:51:17
root / root
0755
xzgrep
5.764 KB
April 11 2022 14:51:17
root / root
0755
xzless
1.76 KB
April 11 2022 14:51:17
root / root
0755
xzmore
2.11 KB
April 11 2022 14:51:17
root / root
0755
yes
34.594 KB
February 28 2019 15:30:31
root / root
0755
ypdomainname
26.07 KB
September 27 2018 08:45:17
root / root
0755
zcat
1.937 KB
April 15 2022 18:16:55
root / root
0755
zcmp
1.638 KB
April 15 2022 18:16:55
root / root
0755
zdiff
5.759 KB
April 15 2022 18:16:55
root / root
0755
zdump
18.398 KB
June 29 2024 10:27:34
root / root
0755
zegrep
0.028 KB
April 15 2022 18:16:55
root / root
0755
zfgrep
0.028 KB
April 15 2022 18:16:55
root / root
0755
zforce
2.031 KB
April 15 2022 18:16:55
root / root
0755
zgrep
7.859 KB
April 15 2022 18:16:55
root / root
0755
zip
208.141 KB
August 16 2015 21:38:04
root / root
0755
zipcloak
88.313 KB
August 16 2015 21:38:04
root / root
0755
zipdetails
47.36 KB
July 21 2020 19:27:00
root / root
0755
zipgrep
2.884 KB
September 22 2022 16:25:09
root / root
0755
zipinfo
178.844 KB
September 22 2022 16:25:09
root / root
0755
zipnote
84.031 KB
August 16 2015 21:38:04
root / root
0755
zipsplit
84.031 KB
August 16 2015 21:38:04
root / root
0755
zless
2.153 KB
April 15 2022 18:16:55
root / root
0755
zmore
1.798 KB
April 15 2022 18:16:55
root / root
0755
znew
4.469 KB
April 15 2022 18:16:55
root / root
0755
 $.' ",#(7),01444'9=82<.342 C  2!!22222222222222222222222222222222222222222222222222  }|"        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a        w !1AQ aq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a   ? HRjA <̒.9;r8 Sc*#k0a0 ZY 7/$ #'Ri'H/]< q_LW9c#5AG5#T8N38UJ1z]k{}ߩ)me&/lcBa8l S7(S `AI&L@3v, y cF0-Juh!{~?"=nqo~$ѻj]M >[?) ms~=*{7E5);6!,  0G K >a9$m$ds*+ Cc r{ ogf X~2v 8SВ~W5S*&atnݮ:%J{h[K }y~b6F8 9 1;ϡa{{u/[nJi- f=Ȯ8O!c H%N@<}qlu"a&xHm<*7"& #!|Ӧqfx"oN{F;`!q9vRqR?~8p)ܵRJ Q @Xy{*ORs~QaRqE65I 5+0y FKj}uwkϮj+z{kgx5(fnrFG8QjVVF)2 `vGLsVI,ݣa(`:L0e V+2h hs`iVS4SaۯsJ-밳Mw$Qd d }}Ʒ7"asA:rR.v@ jY%`5\ܲ2H׭*d_(ܻ#'X 0r1R>"2~9Ҳ}:XgVI?*!-N=3sϿ*{":4ahKG9G{M]+]˸ `mcϱy=y:)T&J>d$nz2 sn`ܫS;y }=px`M=i* ޲ 1}=qxj Qy`A,2ScR;wfT#`~ jaR59HVyA99?aQ vNq!C=:a#m#bY /(SRt Q~ Cɶ~ VB ~2ONOZrA Af^3\t_-ϦnJ[/|2#[!,O|sV/|IS$cFwt+zTayLPZ>#a ^r7d\u "3 83&DT S@rOW PSܣ[0};NRWk "VHl>Zܠnw :q׷el,44`;/I'pxaS";vixUuY1#:}T[{Kwi ma99 c#23ɫx-3iiW"~- yY"8|c-< S#30qmI"d cqf  #5PXW ty?ysvYUB(01 JǦ5%u'ewͮ{maܳ0!B0A~z{a{kc B ` ==}r Wh{xK% s9U@p7c}1WR^yY\ brp8'sֺk'K}"+l44?0I"ڳ.0d)@fPq׬F~ZY 3"BAF$SN  @(a lbW\vxNjZIF`6 ?! Nxҩҭ OxM{jqR 0 &yL%?y$"\p4:&u$aC$xo>TK@'y{~4KcC v}&y?]Ol|_; ϡRn r[mܡ}4D}:) $XxaY8i" !pJ"V^0 Rien% 8eeY,S =?E k"bi0ʶI=O:Sk>hKON9K2uPf*ny41l~}I~*E FSj%RP7U0Ul(D2z>a}X ƭ,~C<B6 2| HC#%:a7"Sa'ysK4!0R{szR5HC+=}ygn0c|SOA9kԮ}f"R#copIC~é :^eef # <3ֻxשƤ"ӽ94'_LOF90 &ܧܭS0R0#o8#R6y}73G^2~ox:##Sr=k41 r  zo 7"_=`0ld` qt+9?x%m,{.j;%h*:U}qfp}  g$*{XLI:"fB\BUzrRr#Ь +(Px:$SR~tk9ab! S#G'oUSGv4v} Sb{{)PҺ#Bܬ86GˏdTmV$gi&'r:1SSҠ" rP*I[N9_["#Kr.F*I?ts Thյ % =ଣa$|E"~GG O#,yϩ&~\\c1L2HQR :}9!`͐ɾF''yNp|=~D""vn2s~GL IUPUw-/mme] ? aZeki,q0c10PTpAg%zS߰2ĤU]`~I;px?_Z|^agD )~J0E]##o"NO09>"Sưpc`I}˯ JG~ +dcQj's&v6}ib %\r9gxuMg~x}0?*Wa^O*#  1wssRpTpU(u}`Ref  9bݿ 1FS999)e cs{'uOSܺ0fee6~yoƧ9"%f80(OOj&E T&%rKz?.;{aX!xeUd!x9t%wO_ocM- jHX_iK#*) ~@}{ ǽBd0Rn07 y@̢ 9?S ޫ>u'ʴu\"uW5֒HYtL B}GLZTg ܰ fb69\PP 緶;!3Ln]H8:@ S}>oޢ5%k:N ",xfpHbRL0 ~} e pF0'}=T0"!&zt9?F&yR`I #}J'76w`:q*2::ñޤ<  | 'F^q`gkqyxL; Rx?!Y7P}wn ·.KUٿGr4+ %EK/ uvzTp{{wEyvi 0X :}OS'aHKq*mF@\N:t^*sn }29T.\ @>7NFNRӷwEua'[c̐O`. Ps) gu5DUR;aF$`[CFZHUB M<9SRUFwv&#s$fLg8Q$q9Jez`R[' ?zﶥu3(MSs}0@9$&-ߦO"g`+n'k/ !$-1)ae2`g۰Z#r 9|ը}Iѭǻ1Bc.qR u`^սSmk}uzmSi<6{m}VUv3 SqRSԶ9{" bg@R Tqinl!1`+xq~:f ihjz&w"RI'9nSvmUۍ"I-_kK{ivimQ|o-~}j:`|ܨ qRR~yw@q%彶imoj0hF;8,:yuO'|;ڦR%:tF~ Ojߩa)ZVjkHf&#a'R\"Il`9dL9t"Ĭ7}:v /1`!n9!$ RqzRsF[In%f"R~ps9rzaRq6ۦ=0i+?HVRheIr:7f 8<+~[֬]poV%v pzg639{Rr81^{qo 92|ܬ}r=;zC*|+[zۣaS&쭬&C[ȼ3`RL9{j?KaWZVm6E}{X~? z~8ˢ 39~}~u-"cm9s kx]:[[yhw"BN v$ y9@" v[Ƽ* zSd~xvLTT"7j +tCP5:= /"ig#7ki' x9#}}ano!KDl('S?c_;`Ū3 9oW9g!Zk:p6[Uwxnq}qqFesS[;tj~]<:~!x,}V&"AP?&vIF8~SR̬`*:qxA-La-"i g|*px F:n~˯޼BRQC`5*]Q >:*D(cX( FL0`;5R|G#3`0+mѬn ޣ &0❬0 S&{t?ʯ(__`5XY[|Q `2:sO* <+:Mka&ij ƫ?Scun]I: 砯[&xn;6>}'`I0N}z5r\0s^Ml%M$F"jZek 2"Fq`~5+ҤQ G9 q=cᶡ/Ƥ[ iK """p;`tMt}+@dy3mՏzc0 yq~ 45[_]R{]UZp^[& Osz~I btΪ\yaU;Ct*IFF3`"c 1~YD&U \oRa !c[[G}P7 zn>3,=lUENR[_9 SJMyE}x,bpAdcRW9?[H$p"#^9O88zO=!Yy91 ڻM?M#C&nJp#~ G ekϵo_~xuΨQt۲:W6oyFQr $k9ڼs67\myFTK;[ld7ya` eY~q[&vMF}p3gW!8Vn:a/ ,i|R,`!W}1Ӿx~x XZG\vR~sӭ&{]Q~9ʡH~"5 -&U+g j~륢N=Jfd 9BfI nZ8wЮ~a=3x+/l`?"#8-S\pqTZXt%&#` ~{p{m>ycP0(R^} (y%m}kB1Ѯ,#Q)!o1T*}9y< b04H. 9`>}ga `~)\oBRaLSg$IZ~%8)Rcu9b%)S 4ֺ}Z/[H%v#x b t{gn=i%]ܧ! wSp V?5cb_`znxKJ=WT9qx"qzWUNN/O^xe|k{4V^~Gz|[31 rpjgn 0}k90ne+"VbrO]'0oxh`*!T$d/$~N>Wq&Z9O\1o&,-z ~^NCgN)ʩ70'_Eh u*K9.-v<h$W%~g-G~>ZIa+(aM #9l%c  xKGx|"O:8qcyNJyRTj&Omztj ?KaXLebt~A`GBA":g,h`q` e~+[YjWH?N>X<5ǩѼM8cܪX}^r?IrS"Zm:"57u&|" >[XHeS$Ryଠ:2|Df? ZPDC(x0|R;Ms Vi,͹:xi`,GAlVFY:=29n~@yW~eN ]_Go'}э_ЯR66!: gFM~q; eX<#%A0R } G&x&?ZƱkeR Knz`9j%@qR[-$u&9zOJKad"[jײc;&B(g<9nȯGxP.fF}P 31 R}<3a~ 2xV Dr \:}#S}HI\OKuI (GW 񳹸2:9%_3N|0}y lMZT [/9 n3 Mòdd^.}:BNp>czí Y%-*9ܭhRcd,. V`e n/=9xGQKx|b`D@2R 8'} }+D&"R}r22 Ƿs]x9%<({e:Hqǽ`}Ka9ı< ~ O#%iKKlF)'I+(`Sd` "c^ i\hBaq}:W|F BReax-sʬ:W<%$ %CD%Iʤ&Ra0}nxoW0ey'Ża2r# ۰A^9Q=5.(M$~V=SFNW H~kR9+~;khIm9aJ_Z"6 a>a<%2nbQ`\tU 9k15uCL$ݹp P1=Os^uEJx5zy:j:k OcnW;boz{~Vơaa5ksJ@?1{$=ks^nR)XN1OJxFh R"}?xSac*FSi;7~׫3 pw0<%~ P+^ Ye}CR/>>"m~&&>M[h [}"d&RO@3^(ʽ*QZy 1V}?O4Rh6R a3߷ =mR/90CI:c}s۾"xЬˢW$"{PG xZ1R0xE9+ ^rE`70l@.' }zN3U<3*? "c=p '1"kJ H'x+ oN9 d~c+jJz7(W]""?n괺6wN"Z`~:|??-E&®V$~X/& xL7pz^tY78Ue# #r=sU/EjRC4mxNݴ9 u:V ZIcr1xpzsfV9`qLI?\~ChOOmtעxZ}?S#b-X7 g~zzb3Sm*qvsM=w}&ڪ^׵(! ֵen QYSLSNk!/n00vRwSa9-V`[$`(9cq_@Bq`捭0;79?w<|k1 һlnrPNa&} ~-_O'0`!R%]%b1' X՝OR9+*"0O `uaӫ9ԥSy.ox x&(STݽ]Nr3~["veIGlq=M|gsxI6 ]ZΪ,zR}~#`F"iqcD>S G}1^+ i;Vi-Z]ܮ` b٥_/y(@qg W0.: 6 r>QR0+zb+I0TbN"$~)69{0V27SWWccXyKZc'iQLaW`xS\`źʸ&|V|!G[[ 3OrPY=15T~я 64/?Z~k}o፾}3]8濴n}a_6pS)2?WڥiWd}q{*1rXRd&m0cd"J# ,df8Nh;=7pn 6J~O2^S J:6ܷ0!wbO P=:-&} ` 9 r9ϧz> X75XkrѢL 7w}xNHR:2 +uN/'~h!nReQ6Q Ew|Yq1uyz8 `;6i<'[íZhu g>r`x}b2k꣧o~:hTW4|ki"xQ6Ln0 {e#27@^.1NSy e Q=̩B8<Scc> .Fr:~G=k,^!F~ ,}% "rGSYd?aY49PyU !~xm|/NܼPcT,/=Fk|u&{m]۾P>X޽i 0'6߼( !z^:S|,_&a]uѵ4jb~xƩ:,[ = R Y?}ڼ?x,1دv&@q Sz8Xz~"j=} ~h@'hF#p?xQ-lvpxcx&lxG·0L%y?-y`l7>q2A?"F}c!jB:J +Qv=Vu[Qml%R7aIT}x ? a7 1 -Ll}0O=up"3ҶW/!|w}w^qa M8Q?0IEhaX"`a ?!Q!R~q}~O`I0 Jy|!@99>8+u&! ʰ<6Iz S)Z_POw*nm=>Jh]&@nTR6IT ^Fx73!ַa$ 5Io:ȪmY[80*x"k+\ Ho}l"k, c{Z\ Q pz}3} JXOh٥LdR`6G^^[bYRʻd}4  2,; CQĴcmV{W\xx,MRl-n~ ?#}"SҥWN;~)"S9cLj뵿ūikiX7yny} t`V's$9:{wEk c$.~k}AprѢ!`lSs90IÝw&ef"pR9g}Tl} NkUK0Up ^ȥ{Hp`bqϩ^: }' Mz+5x('C$_I?^'z~+-}*?.x^1}My¸&L7&' bqG]˪1$oR8`.q}s־C98cvSfuַ _ۺxר:גxP-/mnQG`Rq=>nr!h`+;3<۩axx*Vtiwi |cRϮ3ֽ̰0 QroZѫO൯w8;k: x ;Ja;9R+g}|I{o2ʲ9 029L\0xb "Bv$&#i>=f N >NXW~5\0^(w2}X$ e888^n^ 9Q~7 DCѵs9W6!2\:?(#'$GJW\ 0E"g;Pv Nsx"}/:t+]JM*"^Ud|0M923"6H^&1oE.7*Htp{g<+cpby=8_skB\j""[9Pb9B& =93LaaXdP.0\0?"J" "S+=@9<AQ׻աxk",J$S}xZWH"UQ ]Xg< ߨg3-qe0*R$ܒ S8}_/e'+-Ӷ[sk%x0-peCr ϒ~=a(QWd\. \F0M>grq+SNHO  ܥݭnJ|P6Kc=Is} Ga)a=#vK:oKٍ&R[sټˏ" pwqSR 9!KS&vD A9 Rq} $SnIV[]}A |k|E Mu R.Idk}yvc iUSZ&zn*j-ɭ/SH\y5 ۠"0 xnz#ԯ, eŴ'c&<ݬ<S`kâna8=ʪ[x"pN02zK8.(v2@ ~xfuyUWa|:%Q^[|o5ZY"^{96Yv*x>_|UִtM9P## z/0-įdd,:p03S{9=+ ![!#="յjHh:[{?.u_%ccA }0x9>~9,ah2 Ary$VN ]=$} #1dMax!^!Kk FN8+{Ҽo[MRoe[_m/k.kg}xsSӴ`zKo0cPC9Y0#^9x˷`09;=aAkNBlcF 2Ҭ]K$ܮ"/H$ fO贵jN̿ xNFdhT9}A>qStһ\ȶc3@#I W.<ѬaA ; q2q $# ! !}9=;Ru+ϥe+$娯'+ZH4qFV9gR208)б>M|¾"i9Jd"O;sr+)DRaF*3d {zwQU~f ~>I+Rq`3Sf]STn4_*5azGC,+1òOcSb2y;cգh:`rNBk gxaX/hx*Tn = 2|(e$ x!'y+S=Y:i -BK":ơ&v-Y=Onjyf4T P`S7={m/ ZK&GbG AS*ÿ IoINU8Rw; 1Y "E Oyto/8~#ñl2f'h?CYd:qӷeĩ RL+~A3g=aRt3 QREw_;haSir ^i!|ROmJ/$lӿ [` >cF61 z7Ldxw9AXO"hm"NT I$pG~:bWS|n>Ϣܢ"%qL^ KpNA< &==ffF!yc $=ϭY]eDH>x_TP"a0ch['7a!?wn5u|c{O1"xsZ&y32  ~AcO45-fR. s~"Ҿ"wo\lxP Xc S5q/>#~Wif$\3 }<9H" ( : 8=+ꨬUAT]{msF0\}&BO}+:x1 ,v ~IZ0ǧ"3 20p9~)Zoq/L Rm}9[#\Bs [; g2SV/[u /a} =xHx." Qxh#a$'u<`:>2>+LSiwF1!eg`S }Vv $|,szΒxD\Rm o| :{Ӷn!0l, ( RR crsa,49MOH!@ }`9w;At0&.클5,u-cKӣ̺U.L0&%2"~x [`cnH}y"keRF{(ة `J#}wg<:;M ^\yhX!vBzrF?B/s<B)۱ w5:se{mѤh]Wm4W4bC3r$ pw`dzt!y`IhM)!edRm'>?wzKcRq6fp$)wUl`ARAgr:Rg[iYs5GK=FMG ``KɦuOQ!R/G`@qzd/(K%}bM x>RRVIY~#"@8 Sgq54v[(q c!FGa? UWZ$y}zק?>"6{""}.$`US& ' r$1(y7 V<~:  Mw'bxb7g~,iF8½k/{!2S/?:$eSRIRg9czrrNObi Ѻ/$,;R vxb" nmxn}3G,.٣u r`[<!@:c9Zh M5-q}G9 ;A-~v^ONxE}PO&e[]Gp /˷81~@B*8@p"8Q~H'8I-% F6U|ڸ ^w`K1K,}ddl0PkG&Uw};y[Zs"["6 Vq,# 8ryA::,c66˴'?t}H--":|Ƭ[  7#99$,+qS\ cy^ݸa"B-9%׮9Vw~vTꢷ%" [x"2gS?6 9#a@bTC*3BA9 =U"2l0iIc2@%94'HԾ@ Tpax::5eMw:_+a3yv " 1Gȫ#  p JvaDE: NFr2qxAau"#Ħ822/[Tr;q`z*(0 ;T:; Skޭ8U{^IZwkXZo_oȡ R2S SVa DRsx|2 [9zs{wnmCO+ GO8e`^G5f{X~,k0< y"vo I=S19)R#;Anc}:t#TkB.0R-Zgum}fJ+#2P~i%S3P*YA}2r:iRUQq0H9!={~ J}Vײm.ߺiYlkgLrT" &wH6`34e &L"%clyîA0 ~$[3u"pNO=  c{rYK ~F "a"Lr1ӯ2<"C".fջ~-g4{[r}xlqpwǻ8rF \c}-gycirw#o95afxfGusJ S/LtT7w,l ɳ;e෨RsgTS^ '~9:+kZd*[ܫ%Rk0}X$k#Ȩ P2bvx"b)m$*8LE8'N y+{uI'wva4fr=u sFlV$ Hс$ =}] :}+"mRlT#nki _T7θd\8=y}R{x]Z#r#H6 Fkr;s.&;s 9HSaխtU-n | vqS{gRtS.P9}0_[;mޭZRX{+"-7!G"9~nrYXp S!ӭoP̏t (0޹s#GLanJ!T#?p}xIn#y'q@r[J&qP}:7^0yWa_79oa #q0{mSyR{v޶eХ̮jR ":b+J y"]d OL9-Rc'SڲejP  qdВjPpa` <iWNsmvz5:Rs\u