"""Get useful information from live Python objects.

This module encapsulates the interface provided by the internal special
attributes (co_*, im_*, tb_*, etc.) in a friendlier fashion.
It also provides some help for examining source code and class layout.

Here are some of the useful functions provided by this module:

    ismodule(), isclass(), ismethod(), isfunction(), isgeneratorfunction(),
        isgenerator(), istraceback(), isframe(), iscode(), isbuiltin(),
        isroutine() - check object types
    getmembers() - get members of an object that satisfy a given condition

    getfile(), getsourcefile(), getsource() - find an object's source code
    getdoc(), getcomments() - get documentation on an object
    getmodule() - determine the module that an object came from
    getclasstree() - arrange classes so as to represent their hierarchy

    getargvalues(), getcallargs() - get info about function arguments
    getfullargspec() - same, with support for Python 3 features
    formatargvalues() - format an argument spec
    getouterframes(), getinnerframes() - get info about frames
    currentframe() - get the current stack frame
    stack(), trace() - get info about frames on the stack or in a traceback

    signature() - get a Signature object for the callable

    get_annotations() - safely compute an object's annotations
"""

# This module is in the public domain.  No warranties.

__author__ = ('Ka-Ping Yee <ping@lfw.org>',
              'Yury Selivanov <yselivanov@sprymix.com>')

__all__ = [
    "ArgInfo",
    "Arguments",
    "Attribute",
    "BlockFinder",
    "BoundArguments",
    "CORO_CLOSED",
    "CORO_CREATED",
    "CORO_RUNNING",
    "CORO_SUSPENDED",
    "CO_ASYNC_GENERATOR",
    "CO_COROUTINE",
    "CO_GENERATOR",
    "CO_ITERABLE_COROUTINE",
    "CO_NESTED",
    "CO_NEWLOCALS",
    "CO_NOFREE",
    "CO_OPTIMIZED",
    "CO_VARARGS",
    "CO_VARKEYWORDS",
    "ClassFoundException",
    "ClosureVars",
    "EndOfBlock",
    "FrameInfo",
    "FullArgSpec",
    "GEN_CLOSED",
    "GEN_CREATED",
    "GEN_RUNNING",
    "GEN_SUSPENDED",
    "Parameter",
    "Signature",
    "TPFLAGS_IS_ABSTRACT",
    "Traceback",
    "classify_class_attrs",
    "cleandoc",
    "currentframe",
    "findsource",
    "formatannotation",
    "formatannotationrelativeto",
    "formatargvalues",
    "get_annotations",
    "getabsfile",
    "getargs",
    "getargvalues",
    "getattr_static",
    "getblock",
    "getcallargs",
    "getclasstree",
    "getclosurevars",
    "getcomments",
    "getcoroutinelocals",
    "getcoroutinestate",
    "getdoc",
    "getfile",
    "getframeinfo",
    "getfullargspec",
    "getgeneratorlocals",
    "getgeneratorstate",
    "getinnerframes",
    "getlineno",
    "getmembers",
    "getmembers_static",
    "getmodule",
    "getmodulename",
    "getmro",
    "getouterframes",
    "getsource",
    "getsourcefile",
    "getsourcelines",
    "indentsize",
    "isabstract",
    "isasyncgen",
    "isasyncgenfunction",
    "isawaitable",
    "isbuiltin",
    "isclass",
    "iscode",
    "iscoroutine",
    "iscoroutinefunction",
    "isdatadescriptor",
    "isframe",
    "isfunction",
    "isgenerator",
    "isgeneratorfunction",
    "isgetsetdescriptor",
    "ismemberdescriptor",
    "ismethod",
    "ismethoddescriptor",
    "ismethodwrapper",
    "ismodule",
    "isroutine",
    "istraceback",
    "signature",
    "stack",
    "trace",
    "unwrap",
    "walktree",
]


import abc
import ast
import dis
import collections.abc
import enum
import importlib.machinery
import itertools
import linecache
import os
import re
import sys
import tokenize
import token
import types
import functools
import builtins
from keyword import iskeyword
from operator import attrgetter
from collections import namedtuple, OrderedDict

# Create constants for the compiler flags in Include/code.h
# We try to get them from dis to avoid duplication
mod_dict = globals()
for k, v in dis.COMPILER_FLAG_NAMES.items():
    mod_dict["CO_" + v] = k
del k, v, mod_dict

# See Include/object.h
TPFLAGS_IS_ABSTRACT = 1 << 20


def get_annotations(obj, *, globals=None, locals=None, eval_str=False):
    """Compute the annotations dict for an object.

    obj may be a callable, class, or module.
    Passing in an object of any other type raises TypeError.

    Returns a dict.  get_annotations() returns a new dict every time
    it's called; calling it twice on the same object will return two
    different but equivalent dicts.

    This function handles several details for you:

      * If eval_str is true, values of type str will
        be un-stringized using eval().  This is intended
        for use with stringized annotations
        ("from __future__ import annotations").
      * If obj doesn't have an annotations dict, returns an
        empty dict.  (Functions and methods always have an
        annotations dict; classes, modules, and other types of
        callables may not.)
      * Ignores inherited annotations on classes.  If a class
        doesn't have its own annotations dict, returns an empty dict.
      * All accesses to object members and dict values are done
        using getattr() and dict.get() for safety.
      * Always, always, always returns a freshly-created dict.

    eval_str controls whether or not values of type str are replaced
    with the result of calling eval() on those values:

      * If eval_str is true, eval() is called on values of type str.
      * If eval_str is false (the default), values of type str are unchanged.

    globals and locals are passed in to eval(); see the documentation
    for eval() for more information.  If either globals or locals is
    None, this function may replace that value with a context-specific
    default, contingent on type(obj):

      * If obj is a module, globals defaults to obj.__dict__.
      * If obj is a class, globals defaults to
        sys.modules[obj.__module__].__dict__ and locals
        defaults to the obj class namespace.
      * If obj is a callable, globals defaults to obj.__globals__,
        although if obj is a wrapped function (using
        functools.update_wrapper()) it is first unwrapped.
    """
    if isinstance(obj, type):
        # class
        obj_dict = getattr(obj, '__dict__', None)
        if obj_dict and hasattr(obj_dict, 'get'):
            ann = obj_dict.get('__annotations__', None)
            if isinstance(ann, types.GetSetDescriptorType):
                ann = None
        else:
            ann = None

        obj_globals = None
        module_name = getattr(obj, '__module__', None)
        if module_name:
            module = sys.modules.get(module_name, None)
            if module:
                obj_globals = getattr(module, '__dict__', None)
        obj_locals = dict(vars(obj))
        unwrap = obj
    elif isinstance(obj, types.ModuleType):
        # module
        ann = getattr(obj, '__annotations__', None)
        obj_globals = getattr(obj, '__dict__')
        obj_locals = None
        unwrap = None
    elif callable(obj):
        # this includes types.Function, types.BuiltinFunctionType,
        # types.BuiltinMethodType, functools.partial, functools.singledispatch,
        # "class funclike" from Lib/test/test_inspect... on and on it goes.
        ann = getattr(obj, '__annotations__', None)
        obj_globals = getattr(obj, '__globals__', None)
        obj_locals = None
        unwrap = obj
    else:
        raise TypeError(f"{obj!r} is not a module, class, or callable.")

    if ann is None:
        return {}

    if not isinstance(ann, dict):
        raise ValueError(f"{obj!r}.__annotations__ is neither a dict nor None")

    if not ann:
        return {}

    if not eval_str:
        return dict(ann)

    if unwrap is not None:
        while True:
            if hasattr(unwrap, '__wrapped__'):
                unwrap = unwrap.__wrapped__
                continue
            if isinstance(unwrap, functools.partial):
                unwrap = unwrap.func
                continue
            break
        if hasattr(unwrap, "__globals__"):
            obj_globals = unwrap.__globals__

    if globals is None:
        globals = obj_globals
    if locals is None:
        locals = obj_locals

    return_value = {key:
        value if not isinstance(value, str) else eval(value, globals, locals)
        for key, value in ann.items() }
    return return_value


# ----------------------------------------------------------- type-checking
def ismodule(object):
    """Return true if the object is a module.

    Module objects provide these attributes:
        __cached__      pathname to byte compiled file
        __doc__         documentation string
        __file__        filename (missing for built-in modules)"""
    return isinstance(object, types.ModuleType)

def isclass(object):
    """Return true if the object is a class.

    Class objects provide these attributes:
        __doc__         documentation string
        __module__      name of module in which this class was defined"""
    return isinstance(object, type)

def ismethod(object):
    """Return true if the object is an instance method.

    Instance method objects provide these attributes:
        __doc__         documentation string
        __name__        name with which this method was defined
        __func__        function object containing implementation of method
        __self__        instance to which this method is bound"""
    return isinstance(object, types.MethodType)

def ismethoddescriptor(object):
    """Return true if the object is a method descriptor.

    But not if ismethod() or isclass() or isfunction() are true.

    This is new in Python 2.2, and, for example, is true of int.__add__.
    An object passing this test has a __get__ attribute but not a __set__
    attribute, but beyond that the set of attributes varies.  __name__ is
    usually sensible, and __doc__ often is.

    Methods implemented via descriptors that also pass one of the other
    tests return false from the ismethoddescriptor() test, simply because
    the other tests promise more -- you can, e.g., count on having the
    __func__ attribute (etc) when an object passes ismethod()."""
    if isclass(object) or ismethod(object) or isfunction(object):
        # mutual exclusion
        return False
    tp = type(object)
    return hasattr(tp, "__get__") and not hasattr(tp, "__set__")

def isdatadescriptor(object):
    """Return true if the object is a data descriptor.

    Data descriptors have a __set__ or a __delete__ attribute.  Examples are
    properties (defined in Python) and getsets and members (defined in C).
    Typically, data descriptors will also have __name__ and __doc__ attributes
    (properties, getsets, and members have both of these attributes), but this
    is not guaranteed."""
    if isclass(object) or ismethod(object) or isfunction(object):
        # mutual exclusion
        return False
    tp = type(object)
    return hasattr(tp, "__set__") or hasattr(tp, "__delete__")

if hasattr(types, 'MemberDescriptorType'):
    # CPython and equivalent
    def ismemberdescriptor(object):
        """Return true if the object is a member descriptor.

        Member descriptors are specialized descriptors defined in extension
        modules."""
        return isinstance(object, types.MemberDescriptorType)
else:
    # Other implementations
    def ismemberdescriptor(object):
        """Return true if the object is a member descriptor.

        Member descriptors are specialized descriptors defined in extension
        modules."""
        return False

if hasattr(types, 'GetSetDescriptorType'):
    # CPython and equivalent
    def isgetsetdescriptor(object):
        """Return true if the object is a getset descriptor.

        getset descriptors are specialized descriptors defined in extension
        modules."""
        return isinstance(object, types.GetSetDescriptorType)
else:
    # Other implementations
    def isgetsetdescriptor(object):
        """Return true if the object is a getset descriptor.

        getset descriptors are specialized descriptors defined in extension
        modules."""
        return False

def isfunction(object):
    """Return true if the object is a user-defined function.

    Function objects provide these attributes:
        __doc__         documentation string
        __name__        name with which this function was defined
        __code__        code object containing compiled function bytecode
        __defaults__    tuple of any default values for arguments
        __globals__     global namespace in which this function was defined
        __annotations__ dict of parameter annotations
        __kwdefaults__  dict of keyword only parameters with defaults"""
    return isinstance(object, types.FunctionType)

def _has_code_flag(f, flag):
    """Return true if ``f`` is a function (or a method or functools.partial
    wrapper wrapping a function) whose code object has the given ``flag``
    set in its flags."""
    while ismethod(f):
        f = f.__func__
    f = functools._unwrap_partial(f)
    if not (isfunction(f) or _signature_is_functionlike(f)):
        return False
    return bool(f.__code__.co_flags & flag)

def isgeneratorfunction(obj):
    """Return true if the object is a user-defined generator function.

    Generator function objects provide the same attributes as functions.
    See help(isfunction) for a list of attributes."""
    return _has_code_flag(obj, CO_GENERATOR)

def iscoroutinefunction(obj):
    """Return true if the object is a coroutine function.

    Coroutine functions are defined with "async def" syntax.
    """
    return _has_code_flag(obj, CO_COROUTINE)

def isasyncgenfunction(obj):
    """Return true if the object is an asynchronous generator function.

    Asynchronous generator functions are defined with "async def"
    syntax and have "yield" expressions in their body.
    """
    return _has_code_flag(obj, CO_ASYNC_GENERATOR)

def isasyncgen(object):
    """Return true if the object is an asynchronous generator."""
    return isinstance(object, types.AsyncGeneratorType)

def isgenerator(object):
    """Return true if the object is a generator.

    Generator objects provide these attributes:
        __iter__        defined to support iteration over container
        close           raises a new GeneratorExit exception inside the
                        generator to terminate the iteration
        gi_code         code object
        gi_frame        frame object or possibly None once the generator has
                        been exhausted
        gi_running      set to 1 when generator is executing, 0 otherwise
        next            return the next item from the container
        send            resumes the generator and "sends" a value that becomes
                        the result of the current yield-expression
        throw           used to raise an exception inside the generator"""
    return isinstance(object, types.GeneratorType)

def iscoroutine(object):
    """Return true if the object is a coroutine."""
    return isinstance(object, types.CoroutineType)

def isawaitable(object):
    """Return true if object can be passed to an ``await`` expression."""
    return (isinstance(object, types.CoroutineType) or
            isinstance(object, types.GeneratorType) and
                bool(object.gi_code.co_flags & CO_ITERABLE_COROUTINE) or
            isinstance(object, collections.abc.Awaitable))

def istraceback(object):
    """Return true if the object is a traceback.

    Traceback objects provide these attributes:
        tb_frame        frame object at this level
        tb_lasti        index of last attempted instruction in bytecode
        tb_lineno       current line number in Python source code
        tb_next         next inner traceback object (called by this level)"""
    return isinstance(object, types.TracebackType)

def isframe(object):
    """Return true if the object is a frame object.

    Frame objects provide these attributes:
        f_back          next outer frame object (this frame's caller)
        f_builtins      built-in namespace seen by this frame
        f_code          code object being executed in this frame
        f_globals       global namespace seen by this frame
        f_lasti         index of last attempted instruction in bytecode
        f_lineno        current line number in Python source code
        f_locals        local namespace seen by this frame
        f_trace         tracing function for this frame, or None"""
    return isinstance(object, types.FrameType)

def iscode(object):
    """Return true if the object is a code object.

    Code objects provide these attributes:
        co_argcount         number of arguments (not including *, ** args
                            or keyword only arguments)
        co_code             string of raw compiled bytecode
        co_cellvars         tuple of names of cell variables
        co_consts           tuple of constants used in the bytecode
        co_filename         name of file in which this code object was created
        co_firstlineno      number of first line in Python source code
        co_flags            bitmap: 1=optimized | 2=newlocals | 4=*arg | 8=**arg
                            | 16=nested | 32=generator | 64=nofree | 128=coroutine
                            | 256=iterable_coroutine | 512=async_generator
        co_freevars         tuple of names of free variables
        co_posonlyargcount  number of positional only arguments
        co_kwonlyargcount   number of keyword only arguments (not including ** arg)
        co_lnotab           encoded mapping of line numbers to bytecode indices
        co_name             name with which this code object was defined
        co_names            tuple of names other than arguments and function locals
        co_nlocals          number of local variables
        co_stacksize        virtual machine stack space required
        co_varnames         tuple of names of arguments and local variables"""
    return isinstance(object, types.CodeType)

def isbuiltin(object):
    """Return true if the object is a built-in function or method.

    Built-in functions and methods provide these attributes:
        __doc__         documentation string
        __name__        original name of this function or method
        __self__        instance to which a method is bound, or None"""
    return isinstance(object, types.BuiltinFunctionType)

def ismethodwrapper(object):
    """Return true if the object is a method wrapper."""
    return isinstance(object, types.MethodWrapperType)

def isroutine(object):
    """Return true if the object is any kind of function or method."""
    return (isbuiltin(object)
            or isfunction(object)
            or ismethod(object)
            or ismethoddescriptor(object)
            or ismethodwrapper(object))

def isabstract(object):
    """Return true if the object is an abstract base class (ABC)."""
    if not isinstance(object, type):
        return False
    if object.__flags__ & TPFLAGS_IS_ABSTRACT:
        return True
    if not issubclass(type(object), abc.ABCMeta):
        return False
    if hasattr(object, '__abstractmethods__'):
        # It looks like ABCMeta.__new__ has finished running;
        # TPFLAGS_IS_ABSTRACT should have been accurate.
        return False
    # It looks like ABCMeta.__new__ has not finished running yet; we're
    # probably in __init_subclass__. We'll look for abstractmethods manually.
    for name, value in object.__dict__.items():
        if getattr(value, "__isabstractmethod__", False):
            return True
    for base in object.__bases__:
        for name in getattr(base, "__abstractmethods__", ()):
            value = getattr(object, name, None)
            if getattr(value, "__isabstractmethod__", False):
                return True
    return False

def _getmembers(object, predicate, getter):
    results = []
    processed = set()
    names = dir(object)
    if isclass(object):
        mro = (object,) + getmro(object)
        # add any DynamicClassAttributes to the list of names if object is a class;
        # this may result in duplicate entries if, for example, a virtual
        # attribute with the same name as a DynamicClassAttribute exists
        try:
            for base in object.__bases__:
                for k, v in base.__dict__.items():
                    if isinstance(v, types.DynamicClassAttribute):
                        names.append(k)
        except AttributeError:
            pass
    else:
        mro = ()
    for key in names:
        # First try to get the value via getattr.  Some descriptors don't
        # like calling their __get__ (see bug #1785), so fall back to
        # looking in the __dict__.
        try:
            value = getter(object, key)
            # handle the duplicate key
            if key in processed:
                raise AttributeError
        except AttributeError:
            for base in mro:
                if key in base.__dict__:
                    value = base.__dict__[key]
                    break
            else:
                # could be a (currently) missing slot member, or a buggy
                # __dir__; discard and move on
                continue
        if not predicate or predicate(value):
            results.append((key, value))
        processed.add(key)
    results.sort(key=lambda pair: pair[0])
    return results

def getmembers(object, predicate=None):
    """Return all members of an object as (name, value) pairs sorted by name.
    Optionally, only return members that satisfy a given predicate."""
    return _getmembers(object, predicate, getattr)

def getmembers_static(object, predicate=None):
    """Return all members of an object as (name, value) pairs sorted by name
    without triggering dynamic lookup via the descriptor protocol,
    __getattr__ or __getattribute__. Optionally, only return members that
    satisfy a given predicate.

    Note: this function may not be able to retrieve all members
       that getmembers can fetch (like dynamically created attributes)
       and may find members that getmembers can't (like descriptors
       that raise AttributeError). It can also return descriptor objects
       instead of instance members in some cases.
    """
    return _getmembers(object, predicate, getattr_static)

Attribute = namedtuple('Attribute', 'name kind defining_class object')

def classify_class_attrs(cls):
    """Return list of attribute-descriptor tuples.

    For each name in dir(cls), the return list contains a 4-tuple
    with these elements:

        0. The name (a string).

        1. The kind of attribute this is, one of these strings:
               'class method'    created via classmethod()
               'static method'   created via staticmethod()
               'property'        created via property()
               'method'          any other flavor of method or descriptor
               'data'            not a method

        2. The class which defined this attribute (a class).

        3. The object as obtained by calling getattr; if this fails, or if the
           resulting object does not live anywhere in the class' mro (including
           metaclasses) then the object is looked up in the defining class's
           dict (found by walking the mro).

    If one of the items in dir(cls) is stored in the metaclass it will now
    be discovered and not have None be listed as the class in which it was
    defined.  Any items whose home class cannot be discovered are skipped.
    """

    mro = getmro(cls)
    metamro = getmro(type(cls)) # for attributes stored in the metaclass
    metamro = tuple(cls for cls in metamro if cls not in (type, object))
    class_bases = (cls,) + mro
    all_bases = class_bases + metamro
    names = dir(cls)
    # :dd any DynamicClassAttributes to the list of names;
    # this may result in duplicate entries if, for example, a virtual
    # attribute with the same name as a DynamicClassAttribute exists.
    for base in mro:
        for k, v in base.__dict__.items():
            if isinstance(v, types.DynamicClassAttribute) and v.fget is not None:
                names.append(k)
    result = []
    processed = set()

    for name in names:
        # Get the object associated with the name, and where it was defined.
        # Normal objects will be looked up with both getattr and directly in
        # its class' dict (in case getattr fails [bug #1785], and also to look
        # for a docstring).
        # For DynamicClassAttributes on the second pass we only look in the
        # class's dict.
        #
        # Getting an obj from the __dict__ sometimes reveals more than
        # using getattr.  Static and class methods are dramatic examples.
        homecls = None
        get_obj = None
        dict_obj = None
        if name not in processed:
            try:
                if name == '__dict__':
                    raise Exception("__dict__ is special, don't want the proxy")
                get_obj = getattr(cls, name)
            except Exception as exc:
                pass
            else:
                homecls = getattr(get_obj, "__objclass__", homecls)
                if homecls not in class_bases:
                    # if the resulting object does not live somewhere in the
                    # mro, drop it and search the mro manually
                    homecls = None
                    last_cls = None
                    # first look in the classes
                    for srch_cls in class_bases:
                        srch_obj = getattr(srch_cls, name, None)
                        if srch_obj is get_obj:
                            last_cls = srch_cls
                    # then check the metaclasses
                    for srch_cls in metamro:
                        try:
                            srch_obj = srch_cls.__getattr__(cls, name)
                        except AttributeError:
                            continue
                        if srch_obj is get_obj:
                            last_cls = srch_cls
                    if last_cls is not None:
                        homecls = last_cls
        for base in all_bases:
            if name in base.__dict__:
                dict_obj = base.__dict__[name]
                if homecls not in metamro:
                    homecls = base
                break
        if homecls is None:
            # unable to locate the attribute anywhere, most likely due to
            # buggy custom __dir__; discard and move on
            continue
        obj = get_obj if get_obj is not None else dict_obj
        # Classify the object or its descriptor.
        if isinstance(dict_obj, (staticmethod, types.BuiltinMethodType)):
            kind = "static method"
            obj = dict_obj
        elif isinstance(dict_obj, (classmethod, types.ClassMethodDescriptorType)):
            kind = "class method"
            obj = dict_obj
        elif isinstance(dict_obj, property):
            kind = "property"
            obj = dict_obj
        elif isroutine(obj):
            kind = "method"
        else:
            kind = "data"
        result.append(Attribute(name, kind, homecls, obj))
        processed.add(name)
    return result

# ----------------------------------------------------------- class helpers

def getmro(cls):
    "Return tuple of base classes (including cls) in method resolution order."
    return cls.__mro__

# -------------------------------------------------------- function helpers

def unwrap(func, *, stop=None):
    """Get the object wrapped by *func*.

   Follows the chain of :attr:`__wrapped__` attributes returning the last
   object in the chain.

   *stop* is an optional callback accepting an object in the wrapper chain
   as its sole argument that allows the unwrapping to be terminated early if
   the callback returns a true value. If the callback never returns a true
   value, the last object in the chain is returned as usual. For example,
   :func:`signature` uses this to stop unwrapping if any object in the
   chain has a ``__signature__`` attribute defined.

   :exc:`ValueError` is raised if a cycle is encountered.

    """
    if stop is None:
        def _is_wrapper(f):
            return hasattr(f, '__wrapped__')
    else:
        def _is_wrapper(f):
            return hasattr(f, '__wrapped__') and not stop(f)
    f = func  # remember the original func for error reporting
    # Memoise by id to tolerate non-hashable objects, but store objects to
    # ensure they aren't destroyed, which would allow their IDs to be reused.
    memo = {id(f): f}
    recursion_limit = sys.getrecursionlimit()
    while _is_wrapper(func):
        func = func.__wrapped__
        id_func = id(func)
        if (id_func in memo) or (len(memo) >= recursion_limit):
            raise ValueError('wrapper loop when unwrapping {!r}'.format(f))
        memo[id_func] = func
    return func

# -------------------------------------------------- source code extraction
def indentsize(line):
    """Return the indent size, in spaces, at the start of a line of text."""
    expline = line.expandtabs()
    return len(expline) - len(expline.lstrip())

def _findclass(func):
    cls = sys.modules.get(func.__module__)
    if cls is None:
        return None
    for name in func.__qualname__.split('.')[:-1]:
        cls = getattr(cls, name)
    if not isclass(cls):
        return None
    return cls

def _finddoc(obj):
    if isclass(obj):
        for base in obj.__mro__:
            if base is not object:
                try:
                    doc = base.__doc__
                except AttributeError:
                    continue
                if doc is not None:
                    return doc
        return None

    if ismethod(obj):
        name = obj.__func__.__name__
        self = obj.__self__
        if (isclass(self) and
            getattr(getattr(self, name, None), '__func__') is obj.__func__):
            # classmethod
            cls = self
        else:
            cls = self.__class__
    elif isfunction(obj):
        name = obj.__name__
        cls = _findclass(obj)
        if cls is None or getattr(cls, name) is not obj:
            return None
    elif isbuiltin(obj):
        name = obj.__name__
        self = obj.__self__
        if (isclass(self) and
            self.__qualname__ + '.' + name == obj.__qualname__):
            # classmethod
            cls = self
        else:
            cls = self.__class__
    # Should be tested before isdatadescriptor().
    elif isinstance(obj, property):
        func = obj.fget
        name = func.__name__
        cls = _findclass(func)
        if cls is None or getattr(cls, name) is not obj:
            return None
    elif ismethoddescriptor(obj) or isdatadescriptor(obj):
        name = obj.__name__
        cls = obj.__objclass__
        if getattr(cls, name) is not obj:
            return None
        if ismemberdescriptor(obj):
            slots = getattr(cls, '__slots__', None)
            if isinstance(slots, dict) and name in slots:
                return slots[name]
    else:
        return None
    for base in cls.__mro__:
        try:
            doc = getattr(base, name).__doc__
        except AttributeError:
            continue
        if doc is not None:
            return doc
    return None

def getdoc(object):
    """Get the documentation string for an object.

    All tabs are expanded to spaces.  To clean up docstrings that are
    indented to line up with blocks of code, any whitespace than can be
    uniformly removed from the second line onwards is removed."""
    try:
        doc = object.__doc__
    except AttributeError:
        return None
    if doc is None:
        try:
            doc = _finddoc(object)
        except (AttributeError, TypeError):
            return None
    if not isinstance(doc, str):
        return None
    return cleandoc(doc)

def cleandoc(doc):
    """Clean up indentation from docstrings.

    Any whitespace that can be uniformly removed from the second line
    onwards is removed."""
    try:
        lines = doc.expandtabs().split('\n')
    except UnicodeError:
        return None
    else:
        # Find minimum indentation of any non-blank lines after first line.
        margin = sys.maxsize
        for line in lines[1:]:
            content = len(line.lstrip())
            if content:
                indent = len(line) - content
                margin = min(margin, indent)
        # Remove indentation.
        if lines:
            lines[0] = lines[0].lstrip()
        if margin < sys.maxsize:
            for i in range(1, len(lines)): lines[i] = lines[i][margin:]
        # Remove any trailing or leading blank lines.
        while lines and not lines[-1]:
            lines.pop()
        while lines and not lines[0]:
            lines.pop(0)
        return '\n'.join(lines)

def getfile(object):
    """Work out which source or compiled file an object was defined in."""
    if ismodule(object):
        if getattr(object, '__file__', None):
            return object.__file__
        raise TypeError('{!r} is a built-in module'.format(object))
    if isclass(object):
        if hasattr(object, '__module__'):
            module = sys.modules.get(object.__module__)
            if getattr(module, '__file__', None):
                return module.__file__
            if object.__module__ == '__main__':
                raise OSError('source code not available')
        raise TypeError('{!r} is a built-in class'.format(object))
    if ismethod(object):
        object = object.__func__
    if isfunction(object):
        object = object.__code__
    if istraceback(object):
        object = object.tb_frame
    if isframe(object):
        object = object.f_code
    if iscode(object):
        return object.co_filename
    raise TypeError('module, class, method, function, traceback, frame, or '
                    'code object was expected, got {}'.format(
                    type(object).__name__))

def getmodulename(path):
    """Return the module name for a given file, or None."""
    fname = os.path.basename(path)
    # Check for paths that look like an actual module file
    suffixes = [(-len(suffix), suffix)
                    for suffix in importlib.machinery.all_suffixes()]
    suffixes.sort() # try longest suffixes first, in case they overlap
    for neglen, suffix in suffixes:
        if fname.endswith(suffix):
            return fname[:neglen]
    return None

def getsourcefile(object):
    """Return the filename that can be used to locate an object's source.
    Return None if no way can be identified to get the source.
    """
    filename = getfile(object)
    all_bytecode_suffixes = importlib.machinery.DEBUG_BYTECODE_SUFFIXES[:]
    all_bytecode_suffixes += importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES[:]
    if any(filename.endswith(s) for s in all_bytecode_suffixes):
        filename = (os.path.splitext(filename)[0] +
                    importlib.machinery.SOURCE_SUFFIXES[0])
    elif any(filename.endswith(s) for s in
                 importlib.machinery.EXTENSION_SUFFIXES):
        return None
    if os.path.exists(filename):
        return filename
    # only return a non-existent filename if the module has a PEP 302 loader
    module = getmodule(object, filename)
    if getattr(module, '__loader__', None) is not None:
        return filename
    elif getattr(getattr(module, "__spec__", None), "loader", None) is not None:
        return filename
    # or it is in the linecache
    elif filename in linecache.cache:
        return filename

def getabsfile(object, _filename=None):
    """Return an absolute path to the source or compiled file for an object.

    The idea is for each object to have a unique origin, so this routine
    normalizes the result as much as possible."""
    if _filename is None:
        _filename = getsourcefile(object) or getfile(object)
    return os.path.normcase(os.path.abspath(_filename))

modulesbyfile = {}
_filesbymodname = {}

def getmodule(object, _filename=None):
    """Return the module an object was defined in, or None if not found."""
    if ismodule(object):
        return object
    if hasattr(object, '__module__'):
        return sys.modules.get(object.__module__)
    # Try the filename to modulename cache
    if _filename is not None and _filename in modulesbyfile:
        return sys.modules.get(modulesbyfile[_filename])
    # Try the cache again with the absolute file name
    try:
        file = getabsfile(object, _filename)
    except (TypeError, FileNotFoundError):
        return None
    if file in modulesbyfile:
        return sys.modules.get(modulesbyfile[file])
    # Update the filename to module name cache and check yet again
    # Copy sys.modules in order to cope with changes while iterating
    for modname, module in sys.modules.copy().items():
        if ismodule(module) and hasattr(module, '__file__'):
            f = module.__file__
            if f == _filesbymodname.get(modname, None):
                # Have already mapped this module, so skip it
                continue
            _filesbymodname[modname] = f
            f = getabsfile(module)
            # Always map to the name the module knows itself by
            modulesbyfile[f] = modulesbyfile[
                os.path.realpath(f)] = module.__name__
    if file in modulesbyfile:
        return sys.modules.get(modulesbyfile[file])
    # Check the main module
    main = sys.modules['__main__']
    if not hasattr(object, '__name__'):
        return None
    if hasattr(main, object.__name__):
        mainobject = getattr(main, object.__name__)
        if mainobject is object:
            return main
    # Check builtins
    builtin = sys.modules['builtins']
    if hasattr(builtin, object.__name__):
        builtinobject = getattr(builtin, object.__name__)
        if builtinobject is object:
            return builtin


class ClassFoundException(Exception):
    pass


class _ClassFinder(ast.NodeVisitor):

    def __init__(self, qualname):
        self.stack = []
        self.qualname = qualname

    def visit_FunctionDef(self, node):
        self.stack.append(node.name)
        self.stack.append('<locals>')
        self.generic_visit(node)
        self.stack.pop()
        self.stack.pop()

    visit_AsyncFunctionDef = visit_FunctionDef

    def visit_ClassDef(self, node):
        self.stack.append(node.name)
        if self.qualname == '.'.join(self.stack):
            # Return the decorator for the class if present
            if node.decorator_list:
                line_number = node.decorator_list[0].lineno
            else:
                line_number = node.lineno

            # decrement by one since lines starts with indexing by zero
            line_number -= 1
            raise ClassFoundException(line_number)
        self.generic_visit(node)
        self.stack.pop()


def findsource(object):
    """Return the entire source file and starting line number for an object.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a list of all the lines
    in the file and the line number indexes a line in that list.  An OSError
    is raised if the source code cannot be retrieved."""

    file = getsourcefile(object)
    if file:
        # Invalidate cache if needed.
        linecache.checkcache(file)
    else:
        file = getfile(object)
        # Allow filenames in form of "<something>" to pass through.
        # `doctest` monkeypatches `linecache` module to enable
        # inspection, so let `linecache.getlines` to be called.
        if not (file.startswith('<') and file.endswith('>')):
            raise OSError('source code not available')

    module = getmodule(object, file)
    if module:
        lines = linecache.getlines(file, module.__dict__)
    else:
        lines = linecache.getlines(file)
    if not lines:
        raise OSError('could not get source code')

    if ismodule(object):
        return lines, 0

    if isclass(object):
        qualname = object.__qualname__
        source = ''.join(lines)
        tree = ast.parse(source)
        class_finder = _ClassFinder(qualname)
        try:
            class_finder.visit(tree)
        except ClassFoundException as e:
            line_number = e.args[0]
            return lines, line_number
        else:
            raise OSError('could not find class definition')

    if ismethod(object):
        object = object.__func__
    if isfunction(object):
        object = object.__code__
    if istraceback(object):
        object = object.tb_frame
    if isframe(object):
        object = object.f_code
    if iscode(object):
        if not hasattr(object, 'co_firstlineno'):
            raise OSError('could not find function definition')
        lnum = object.co_firstlineno - 1
        pat = re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
        while lnum > 0:
            try:
                line = lines[lnum]
            except IndexError:
                raise OSError('lineno is out of bounds')
            if pat.match(line):
                break
            lnum = lnum - 1
        return lines, lnum
    raise OSError('could not find code object')

def getcomments(object):
    """Get lines of comments immediately preceding an object's source code.

    Returns None when source can't be found.
    """
    try:
        lines, lnum = findsource(object)
    except (OSError, TypeError):
        return None

    if ismodule(object):
        # Look for a comment block at the top of the file.
        start = 0
        if lines and lines[0][:2] == '#!': start = 1
        while start < len(lines) and lines[start].strip() in ('', '#'):
            start = start + 1
        if start < len(lines) and lines[start][:1] == '#':
            comments = []
            end = start
            while end < len(lines) and lines[end][:1] == '#':
                comments.append(lines[end].expandtabs())
                end = end + 1
            return ''.join(comments)

    # Look for a preceding block of comments at the same indentation.
    elif lnum > 0:
        indent = indentsize(lines[lnum])
        end = lnum - 1
        if end >= 0 and lines[end].lstrip()[:1] == '#' and \
            indentsize(lines[end]) == indent:
            comments = [lines[end].expandtabs().lstrip()]
            if end > 0:
                end = end - 1
                comment = lines[end].expandtabs().lstrip()
                while comment[:1] == '#' and indentsize(lines[end]) == indent:
                    comments[:0] = [comment]
                    end = end - 1
                    if end < 0: break
                    comment = lines[end].expandtabs().lstrip()
            while comments and comments[0].strip() == '#':
                comments[:1] = []
            while comments and comments[-1].strip() == '#':
                comments[-1:] = []
            return ''.join(comments)

class EndOfBlock(Exception): pass

class BlockFinder:
    """Provide a tokeneater() method to detect the end of a code block."""
    def __init__(self):
        self.indent = 0
        self.islambda = False
        self.started = False
        self.passline = False
        self.indecorator = False
        self.last = 1
        self.body_col0 = None

    def tokeneater(self, type, token, srowcol, erowcol, line):
        if not self.started and not self.indecorator:
            # skip any decorators
            if token == "@":
                self.indecorator = True
            # look for the first "def", "class" or "lambda"
            elif token in ("def", "class", "lambda"):
                if token == "lambda":
                    self.islambda = True
                self.started = True
            self.passline = True    # skip to the end of the line
        elif type == tokenize.NEWLINE:
            self.passline = False   # stop skipping when a NEWLINE is seen
            self.last = srowcol[0]
            if self.islambda:       # lambdas always end at the first NEWLINE
                raise EndOfBlock
            # hitting a NEWLINE when in a decorator without args
            # ends the decorator
            if self.indecorator:
                self.indecorator = False
        elif self.passline:
            pass
        elif type == tokenize.INDENT:
            if self.body_col0 is None and self.started:
                self.body_col0 = erowcol[1]
            self.indent = self.indent + 1
            self.passline = True
        elif type == tokenize.DEDENT:
            self.indent = self.indent - 1
            # the end of matching indent/dedent pairs end a block
            # (note that this only works for "def"/"class" blocks,
            #  not e.g. for "if: else:" or "try: finally:" blocks)
            if self.indent <= 0:
                raise EndOfBlock
        elif type == tokenize.COMMENT:
            if self.body_col0 is not None and srowcol[1] >= self.body_col0:
                # Include comments if indented at least as much as the block
                self.last = srowcol[0]
        elif self.indent == 0 and type not in (tokenize.COMMENT, tokenize.NL):
            # any other token on the same indentation level end the previous
            # block as well, except the pseudo-tokens COMMENT and NL.
            raise EndOfBlock

def getblock(lines):
    """Extract the block of code at the top of the given list of lines."""
    blockfinder = BlockFinder()
    try:
        tokens = tokenize.generate_tokens(iter(lines).__next__)
        for _token in tokens:
            blockfinder.tokeneater(*_token)
    except (EndOfBlock, IndentationError):
        pass
    return lines[:blockfinder.last]

def getsourcelines(object):
    """Return a list of source lines and starting line number for an object.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a list of the lines
    corresponding to the object and the line number indicates where in the
    original source file the first line of code was found.  An OSError is
    raised if the source code cannot be retrieved."""
    object = unwrap(object)
    lines, lnum = findsource(object)

    if istraceback(object):
        object = object.tb_frame

    # for module or frame that corresponds to module, return all source lines
    if (ismodule(object) or
        (isframe(object) and object.f_code.co_name == "<module>")):
        return lines, 0
    else:
        return getblock(lines[lnum:]), lnum + 1

def getsource(object):
    """Return the text of the source code for an object.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a single string.  An
    OSError is raised if the source code cannot be retrieved."""
    lines, lnum = getsourcelines(object)
    return ''.join(lines)

# --------------------------------------------------- class tree extraction
def walktree(classes, children, parent):
    """Recursive helper function for getclasstree()."""
    results = []
    classes.sort(key=attrgetter('__module__', '__name__'))
    for c in classes:
        results.append((c, c.__bases__))
        if c in children:
            results.append(walktree(children[c], children, c))
    return results

def getclasstree(classes, unique=False):
    """Arrange the given list of classes into a hierarchy of nested lists.

    Where a nested list appears, it contains classes derived from the class
    whose entry immediately precedes the list.  Each entry is a 2-tuple
    containing a class and a tuple of its base classes.  If the 'unique'
    argument is true, exactly one entry appears in the returned structure
    for each class in the given list.  Otherwise, classes using multiple
    inheritance and their descendants will appear multiple times."""
    children = {}
    roots = []
    for c in classes:
        if c.__bases__:
            for parent in c.__bases__:
                if parent not in children:
                    children[parent] = []
                if c not in children[parent]:
                    children[parent].append(c)
                if unique and parent in classes: break
        elif c not in roots:
            roots.append(c)
    for parent in children:
        if parent not in classes:
            roots.append(parent)
    return walktree(roots, children, None)

# ------------------------------------------------ argument list extraction
Arguments = namedtuple('Arguments', 'args, varargs, varkw')

def getargs(co):
    """Get information about the arguments accepted by a code object.

    Three things are returned: (args, varargs, varkw), where
    'args' is the list of argument names. Keyword-only arguments are
    appended. 'varargs' and 'varkw' are the names of the * and **
    arguments or None."""
    if not iscode(co):
        raise TypeError('{!r} is not a code object'.format(co))

    names = co.co_varnames
    nargs = co.co_argcount
    nkwargs = co.co_kwonlyargcount
    args = list(names[:nargs])
    kwonlyargs = list(names[nargs:nargs+nkwargs])
    step = 0

    nargs += nkwargs
    varargs = None
    if co.co_flags & CO_VARARGS:
        varargs = co.co_varnames[nargs]
        nargs = nargs + 1
    varkw = None
    if co.co_flags & CO_VARKEYWORDS:
        varkw = co.co_varnames[nargs]
    return Arguments(args + kwonlyargs, varargs, varkw)


FullArgSpec = namedtuple('FullArgSpec',
    'args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations')

def getfullargspec(func):
    """Get the names and default values of a callable object's parameters.

    A tuple of seven things is returned:
    (args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations).
    'args' is a list of the parameter names.
    'varargs' and 'varkw' are the names of the * and ** parameters or None.
    'defaults' is an n-tuple of the default values of the last n parameters.
    'kwonlyargs' is a list of keyword-only parameter names.
    'kwonlydefaults' is a dictionary mapping names from kwonlyargs to defaults.
    'annotations' is a dictionary mapping parameter names to annotations.

    Notable differences from inspect.signature():
      - the "self" parameter is always reported, even for bound methods
      - wrapper chains defined by __wrapped__ *not* unwrapped automatically
    """
    try:
        # Re: `skip_bound_arg=False`
        #
        # There is a notable difference in behaviour between getfullargspec
        # and Signature: the former always returns 'self' parameter for bound
        # methods, whereas the Signature always shows the actual calling
        # signature of the passed object.
        #
        # To simulate this behaviour, we "unbind" bound methods, to trick
        # inspect.signature to always return their first parameter ("self",
        # usually)

        # Re: `follow_wrapper_chains=False`
        #
        # getfullargspec() historically ignored __wrapped__ attributes,
        # so we ensure that remains the case in 3.3+

        sig = _signature_from_callable(func,
                                       follow_wrapper_chains=False,
                                       skip_bound_arg=False,
                                       sigcls=Signature,
                                       eval_str=False)
    except Exception as ex:
        # Most of the times 'signature' will raise ValueError.
        # But, it can also raise AttributeError, and, maybe something
        # else. So to be fully backwards compatible, we catch all
        # possible exceptions here, and reraise a TypeError.
        raise TypeError('unsupported callable') from ex

    args = []
    varargs = None
    varkw = None
    posonlyargs = []
    kwonlyargs = []
    annotations = {}
    defaults = ()
    kwdefaults = {}

    if sig.return_annotation is not sig.empty:
        annotations['return'] = sig.return_annotation

    for param in sig.parameters.values():
        kind = param.kind
        name = param.name

        if kind is _POSITIONAL_ONLY:
            posonlyargs.append(name)
            if param.default is not param.empty:
                defaults += (param.default,)
        elif kind is _POSITIONAL_OR_KEYWORD:
            args.append(name)
            if param.default is not param.empty:
                defaults += (param.default,)
        elif kind is _VAR_POSITIONAL:
            varargs = name
        elif kind is _KEYWORD_ONLY:
            kwonlyargs.append(name)
            if param.default is not param.empty:
                kwdefaults[name] = param.default
        elif kind is _VAR_KEYWORD:
            varkw = name

        if param.annotation is not param.empty:
            annotations[name] = param.annotation

    if not kwdefaults:
        # compatibility with 'func.__kwdefaults__'
        kwdefaults = None

    if not defaults:
        # compatibility with 'func.__defaults__'
        defaults = None

    return FullArgSpec(posonlyargs + args, varargs, varkw, defaults,
                       kwonlyargs, kwdefaults, annotations)


ArgInfo = namedtuple('ArgInfo', 'args varargs keywords locals')

def getargvalues(frame):
    """Get information about arguments passed into a particular frame.

    A tuple of four things is returned: (args, varargs, varkw, locals).
    'args' is a list of the argument names.
    'varargs' and 'varkw' are the names of the * and ** arguments or None.
    'locals' is the locals dictionary of the given frame."""
    args, varargs, varkw = getargs(frame.f_code)
    return ArgInfo(args, varargs, varkw, frame.f_locals)

def formatannotation(annotation, base_module=None):
    if getattr(annotation, '__module__', None) == 'typing':
        def repl(match):
            text = match.group()
            return text.removeprefix('typing.')
        return re.sub(r'[\w\.]+', repl, repr(annotation))
    if isinstance(annotation, types.GenericAlias):
        return str(annotation)
    if isinstance(annotation, type):
        if annotation.__module__ in ('builtins', base_module):
            return annotation.__qualname__
        return annotation.__module__+'.'+annotation.__qualname__
    return repr(annotation)

def formatannotationrelativeto(object):
    module = getattr(object, '__module__', None)
    def _formatannotation(annotation):
        return formatannotation(annotation, module)
    return _formatannotation


def formatargvalues(args, varargs, varkw, locals,
                    formatarg=str,
                    formatvarargs=lambda name: '*' + name,
                    formatvarkw=lambda name: '**' + name,
                    formatvalue=lambda value: '=' + repr(value)):
    """Format an argument spec from the 4 values returned by getargvalues.

    The first four arguments are (args, varargs, varkw, locals).  The
    next four arguments are the corresponding optional formatting functions
    that are called to turn names and values into strings.  The ninth
    argument is an optional function to format the sequence of arguments."""
    def convert(name, locals=locals,
                formatarg=formatarg, formatvalue=formatvalue):
        return formatarg(name) + formatvalue(locals[name])
    specs = []
    for i in range(len(args)):
        specs.append(convert(args[i]))
    if varargs:
        specs.append(formatvarargs(varargs) + formatvalue(locals[varargs]))
    if varkw:
        specs.append(formatvarkw(varkw) + formatvalue(locals[varkw]))
    return '(' + ', '.join(specs) + ')'

def _missing_arguments(f_name, argnames, pos, values):
    names = [repr(name) for name in argnames if name not in values]
    missing = len(names)
    if missing == 1:
        s = names[0]
    elif missing == 2:
        s = "{} and {}".format(*names)
    else:
        tail = ", {} and {}".format(*names[-2:])
        del names[-2:]
        s = ", ".join(names) + tail
    raise TypeError("%s() missing %i required %s argument%s: %s" %
                    (f_name, missing,
                      "positional" if pos else "keyword-only",
                      "" if missing == 1 else "s", s))

def _too_many(f_name, args, kwonly, varargs, defcount, given, values):
    atleast = len(args) - defcount
    kwonly_given = len([arg for arg in kwonly if arg in values])
    if varargs:
        plural = atleast != 1
        sig = "at least %d" % (atleast,)
    elif defcount:
        plural = True
        sig = "from %d to %d" % (atleast, len(args))
    else:
        plural = len(args) != 1
        sig = str(len(args))
    kwonly_sig = ""
    if kwonly_given:
        msg = " positional argument%s (and %d keyword-only argument%s)"
        kwonly_sig = (msg % ("s" if given != 1 else "", kwonly_given,
                             "s" if kwonly_given != 1 else ""))
    raise TypeError("%s() takes %s positional argument%s but %d%s %s given" %
            (f_name, sig, "s" if plural else "", given, kwonly_sig,
             "was" if given == 1 and not kwonly_given else "were"))

def getcallargs(func, /, *positional, **named):
    """Get the mapping of arguments to values.

    A dict is returned, with keys the function argument names (including the
    names of the * and ** arguments, if any), and values the respective bound
    values from 'positional' and 'named'."""
    spec = getfullargspec(func)
    args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, ann = spec
    f_name = func.__name__
    arg2value = {}


    if ismethod(func) and func.__self__ is not None:
        # implicit 'self' (or 'cls' for classmethods) argument
        positional = (func.__self__,) + positional
    num_pos = len(positional)
    num_args = len(args)
    num_defaults = len(defaults) if defaults else 0

    n = min(num_pos, num_args)
    for i in range(n):
        arg2value[args[i]] = positional[i]
    if varargs:
        arg2value[varargs] = tuple(positional[n:])
    possible_kwargs = set(args + kwonlyargs)
    if varkw:
        arg2value[varkw] = {}
    for kw, value in named.items():
        if kw not in possible_kwargs:
            if not varkw:
                raise TypeError("%s() got an unexpected keyword argument %r" %
                                (f_name, kw))
            arg2value[varkw][kw] = value
            continue
        if kw in arg2value:
            raise TypeError("%s() got multiple values for argument %r" %
                            (f_name, kw))
        arg2value[kw] = value
    if num_pos > num_args and not varargs:
        _too_many(f_name, args, kwonlyargs, varargs, num_defaults,
                   num_pos, arg2value)
    if num_pos < num_args:
        req = args[:num_args - num_defaults]
        for arg in req:
            if arg not in arg2value:
                _missing_arguments(f_name, req, True, arg2value)
        for i, arg in enumerate(args[num_args - num_defaults:]):
            if arg not in arg2value:
                arg2value[arg] = defaults[i]
    missing = 0
    for kwarg in kwonlyargs:
        if kwarg not in arg2value:
            if kwonlydefaults and kwarg in kwonlydefaults:
                arg2value[kwarg] = kwonlydefaults[kwarg]
            else:
                missing += 1
    if missing:
        _missing_arguments(f_name, kwonlyargs, False, arg2value)
    return arg2value

ClosureVars = namedtuple('ClosureVars', 'nonlocals globals builtins unbound')

def getclosurevars(func):
    """
    Get the mapping of free variables to their current values.

    Returns a named tuple of dicts mapping the current nonlocal, global
    and builtin references as seen by the body of the function. A final
    set of unbound names that could not be resolved is also provided.
    """

    if ismethod(func):
        func = func.__func__

    if not isfunction(func):
        raise TypeError("{!r} is not a Python function".format(func))

    code = func.__code__
    # Nonlocal references are named in co_freevars and resolved
    # by looking them up in __closure__ by positional index
    if func.__closure__ is None:
        nonlocal_vars = {}
    else:
        nonlocal_vars = {
            var : cell.cell_contents
            for var, cell in zip(code.co_freevars, func.__closure__)
       }

    # Global and builtin references are named in co_names and resolved
    # by looking them up in __globals__ or __builtins__
    global_ns = func.__globals__
    builtin_ns = global_ns.get("__builtins__", builtins.__dict__)
    if ismodule(builtin_ns):
        builtin_ns = builtin_ns.__dict__
    global_vars = {}
    builtin_vars = {}
    unbound_names = set()
    for name in code.co_names:
        if name in ("None", "True", "False"):
            # Because these used to be builtins instead of keywords, they
            # may still show up as name references. We ignore them.
            continue
        try:
            global_vars[name] = global_ns[name]
        except KeyError:
            try:
                builtin_vars[name] = builtin_ns[name]
            except KeyError:
                unbound_names.add(name)

    return ClosureVars(nonlocal_vars, global_vars,
                       builtin_vars, unbound_names)

# -------------------------------------------------- stack frame extraction

_Traceback = namedtuple('_Traceback', 'filename lineno function code_context index')

class Traceback(_Traceback):
    def __new__(cls, filename, lineno, function, code_context, index, *, positions=None):
        instance = super().__new__(cls, filename, lineno, function, code_context, index)
        instance.positions = positions
        return instance

    def __repr__(self):
        return ('Traceback(filename={!r}, lineno={!r}, function={!r}, '
               'code_context={!r}, index={!r}, positions={!r})'.format(
                self.filename, self.lineno, self.function, self.code_context,
                self.index, self.positions))

def _get_code_position_from_tb(tb):
    code, instruction_index = tb.tb_frame.f_code, tb.tb_lasti
    return _get_code_position(code, instruction_index)

def _get_code_position(code, instruction_index):
    if instruction_index < 0:
        return (None, None, None, None)
    positions_gen = code.co_positions()
    # The nth entry in code.co_positions() corresponds to instruction (2*n)th since Python 3.10+
    return next(itertools.islice(positions_gen, instruction_index // 2, None))

def getframeinfo(frame, context=1):
    """Get information about a frame or traceback object.

    A tuple of five things is returned: the filename, the line number of
    the current line, the function name, a list of lines of context from
    the source code, and the index of the current line within that list.
    The optional second argument specifies the number of lines of context
    to return, which are centered around the current line."""
    if istraceback(frame):
        positions = _get_code_position_from_tb(frame)
        lineno = frame.tb_lineno
        frame = frame.tb_frame
    else:
        lineno = frame.f_lineno
        positions = _get_code_position(frame.f_code, frame.f_lasti)

    if positions[0] is None:
        frame, *positions = (frame, lineno, *positions[1:])
    else:
        frame, *positions = (frame, *positions)

    lineno = positions[0]

    if not isframe(frame):
        raise TypeError('{!r} is not a frame or traceback object'.format(frame))

    filename = getsourcefile(frame) or getfile(frame)
    if context > 0:
        start = lineno - 1 - context//2
        try:
            lines, lnum = findsource(frame)
        except OSError:
            lines = index = None
        else:
            start = max(0, min(start, len(lines) - context))
            lines = lines[start:start+context]
            index = lineno - 1 - start
    else:
        lines = index = None

    return Traceback(filename, lineno, frame.f_code.co_name, lines,
                     index, positions=dis.Positions(*positions))

def getlineno(frame):
    """Get the line number from a frame object, allowing for optimization."""
    # FrameType.f_lineno is now a descriptor that grovels co_lnotab
    return frame.f_lineno

_FrameInfo = namedtuple('_FrameInfo', ('frame',) + Traceback._fields)
class FrameInfo(_FrameInfo):
    def __new__(cls, frame, filename, lineno, function, code_context, index, *, positions=None):
        instance = super().__new__(cls, frame, filename, lineno, function, code_context, index)
        instance.positions = positions
        return instance

    def __repr__(self):
        return ('FrameInfo(frame={!r}, filename={!r}, lineno={!r}, function={!r}, '
               'code_context={!r}, index={!r}, positions={!r})'.format(
                self.frame, self.filename, self.lineno, self.function,
                self.code_context, self.index, self.positions))

def getouterframes(frame, context=1):
    """Get a list of records for a frame and all higher (calling) frames.

    Each record contains a frame object, filename, line number, function
    name, a list of lines of context, and index within the context."""
    framelist = []
    while frame:
        traceback_info = getframeinfo(frame, context)
        frameinfo = (frame,) + traceback_info
        framelist.append(FrameInfo(*frameinfo, positions=traceback_info.positions))
        frame = frame.f_back
    return framelist

def getinnerframes(tb, context=1):
    """Get a list of records for a traceback's frame and all lower frames.

    Each record contains a frame object, filename, line number, function
    name, a list of lines of context, and index within the context."""
    framelist = []
    while tb:
        traceback_info = getframeinfo(tb, context)
        frameinfo = (tb.tb_frame,) + traceback_info
        framelist.append(FrameInfo(*frameinfo, positions=traceback_info.positions))
        tb = tb.tb_next
    return framelist

def currentframe():
    """Return the frame of the caller or None if this is not possible."""
    return sys._getframe(1) if hasattr(sys, "_getframe") else None

def stack(context=1):
    """Return a list of records for the stack above the caller's frame."""
    return getouterframes(sys._getframe(1), context)

def trace(context=1):
    """Return a list of records for the stack below the current exception."""
    return getinnerframes(sys.exc_info()[2], context)


# ------------------------------------------------ static version of getattr

_sentinel = object()

def _static_getmro(klass):
    return type.__dict__['__mro__'].__get__(klass)

def _check_instance(obj, attr):
    instance_dict = {}
    try:
        instance_dict = object.__getattribute__(obj, "__dict__")
    except AttributeError:
        pass
    return dict.get(instance_dict, attr, _sentinel)


def _check_class(klass, attr):
    for entry in _static_getmro(klass):
        if _shadowed_dict(type(entry)) is _sentinel:
            try:
                return entry.__dict__[attr]
            except KeyError:
                pass
    return _sentinel

def _is_type(obj):
    try:
        _static_getmro(obj)
    except TypeError:
        return False
    return True

def _shadowed_dict(klass):
    dict_attr = type.__dict__["__dict__"]
    for entry in _static_getmro(klass):
        try:
            class_dict = dict_attr.__get__(entry)["__dict__"]
        except KeyError:
            pass
        else:
            if not (type(class_dict) is types.GetSetDescriptorType and
                    class_dict.__name__ == "__dict__" and
                    class_dict.__objclass__ is entry):
                return class_dict
    return _sentinel

def getattr_static(obj, attr, default=_sentinel):
    """Retrieve attributes without triggering dynamic lookup via the
       descriptor protocol,  __getattr__ or __getattribute__.

       Note: this function may not be able to retrieve all attributes
       that getattr can fetch (like dynamically created attributes)
       and may find attributes that getattr can't (like descriptors
       that raise AttributeError). It can also return descriptor objects
       instead of instance members in some cases. See the
       documentation for details.
    """
    instance_result = _sentinel
    if not _is_type(obj):
        klass = type(obj)
        dict_attr = _shadowed_dict(klass)
        if (dict_attr is _sentinel or
            type(dict_attr) is types.MemberDescriptorType):
            instance_result = _check_instance(obj, attr)
    else:
        klass = obj

    klass_result = _check_class(klass, attr)

    if instance_result is not _sentinel and klass_result is not _sentinel:
        if (_check_class(type(klass_result), '__get__') is not _sentinel and
            _check_class(type(klass_result), '__set__') is not _sentinel):
            return klass_result

    if instance_result is not _sentinel:
        return instance_result
    if klass_result is not _sentinel:
        return klass_result

    if obj is klass:
        # for types we check the metaclass too
        for entry in _static_getmro(type(klass)):
            if _shadowed_dict(type(entry)) is _sentinel:
                try:
                    return entry.__dict__[attr]
                except KeyError:
                    pass
    if default is not _sentinel:
        return default
    raise AttributeError(attr)


# ------------------------------------------------ generator introspection

GEN_CREATED = 'GEN_CREATED'
GEN_RUNNING = 'GEN_RUNNING'
GEN_SUSPENDED = 'GEN_SUSPENDED'
GEN_CLOSED = 'GEN_CLOSED'

def getgeneratorstate(generator):
    """Get current state of a generator-iterator.

    Possible states are:
      GEN_CREATED: Waiting to start execution.
      GEN_RUNNING: Currently being executed by the interpreter.
      GEN_SUSPENDED: Currently suspended at a yield expression.
      GEN_CLOSED: Execution has completed.
    """
    if generator.gi_running:
        return GEN_RUNNING
    if generator.gi_suspended:
        return GEN_SUSPENDED
    if generator.gi_frame is None:
        return GEN_CLOSED
    return GEN_CREATED


def getgeneratorlocals(generator):
    """
    Get the mapping of generator local variables to their current values.

    A dict is returned, with the keys the local variable names and values the
    bound values."""

    if not isgenerator(generator):
        raise TypeError("{!r} is not a Python generator".format(generator))

    frame = getattr(generator, "gi_frame", None)
    if frame is not None:
        return generator.gi_frame.f_locals
    else:
        return {}


# ------------------------------------------------ coroutine introspection

CORO_CREATED = 'CORO_CREATED'
CORO_RUNNING = 'CORO_RUNNING'
CORO_SUSPENDED = 'CORO_SUSPENDED'
CORO_CLOSED = 'CORO_CLOSED'

def getcoroutinestate(coroutine):
    """Get current state of a coroutine object.

    Possible states are:
      CORO_CREATED: Waiting to start execution.
      CORO_RUNNING: Currently being executed by the interpreter.
      CORO_SUSPENDED: Currently suspended at an await expression.
      CORO_CLOSED: Execution has completed.
    """
    if coroutine.cr_running:
        return CORO_RUNNING
    if coroutine.cr_suspended:
        return CORO_SUSPENDED
    if coroutine.cr_frame is None:
        return CORO_CLOSED
    return CORO_CREATED


def getcoroutinelocals(coroutine):
    """
    Get the mapping of coroutine local variables to their current values.

    A dict is returned, with the keys the local variable names and values the
    bound values."""
    frame = getattr(coroutine, "cr_frame", None)
    if frame is not None:
        return frame.f_locals
    else:
        return {}


###############################################################################
### Function Signature Object (PEP 362)
###############################################################################


_NonUserDefinedCallables = (types.WrapperDescriptorType,
                            types.MethodWrapperType,
                            types.ClassMethodDescriptorType,
                            types.BuiltinFunctionType)


def _signature_get_user_defined_method(cls, method_name):
    """Private helper. Checks if ``cls`` has an attribute
    named ``method_name`` and returns it only if it is a
    pure python function.
    """
    try:
        meth = getattr(cls, method_name)
    except AttributeError:
        return
    else:
        if not isinstance(meth, _NonUserDefinedCallables):
            # Once '__signature__' will be added to 'C'-level
            # callables, this check won't be necessary
            return meth


def _signature_get_partial(wrapped_sig, partial, extra_args=()):
    """Private helper to calculate how 'wrapped_sig' signature will
    look like after applying a 'functools.partial' object (or alike)
    on it.
    """

    old_params = wrapped_sig.parameters
    new_params = OrderedDict(old_params.items())

    partial_args = partial.args or ()
    partial_keywords = partial.keywords or {}

    if extra_args:
        partial_args = extra_args + partial_args

    try:
        ba = wrapped_sig.bind_partial(*partial_args, **partial_keywords)
    except TypeError as ex:
        msg = 'partial object {!r} has incorrect arguments'.format(partial)
        raise ValueError(msg) from ex


    transform_to_kwonly = False
    for param_name, param in old_params.items():
        try:
            arg_value = ba.arguments[param_name]
        except KeyError:
            pass
        else:
            if param.kind is _POSITIONAL_ONLY:
                # If positional-only parameter is bound by partial,
                # it effectively disappears from the signature
                new_params.pop(param_name)
                continue

            if param.kind is _POSITIONAL_OR_KEYWORD:
                if param_name in partial_keywords:
                    # This means that this parameter, and all parameters
                    # after it should be keyword-only (and var-positional
                    # should be removed). Here's why. Consider the following
                    # function:
                    #     foo(a, b, *args, c):
                    #         pass
                    #
                    # "partial(foo, a='spam')" will have the following
                    # signature: "(*, a='spam', b, c)". Because attempting
                    # to call that partial with "(10, 20)" arguments will
                    # raise a TypeError, saying that "a" argument received
                    # multiple values.
                    transform_to_kwonly = True
                    # Set the new default value
                    new_params[param_name] = param.replace(default=arg_value)
                else:
                    # was passed as a positional argument
                    new_params.pop(param.name)
                    continue

            if param.kind is _KEYWORD_ONLY:
                # Set the new default value
                new_params[param_name] = param.replace(default=arg_value)

        if transform_to_kwonly:
            assert param.kind is not _POSITIONAL_ONLY

            if param.kind is _POSITIONAL_OR_KEYWORD:
                new_param = new_params[param_name].replace(kind=_KEYWORD_ONLY)
                new_params[param_name] = new_param
                new_params.move_to_end(param_name)
            elif param.kind in (_KEYWORD_ONLY, _VAR_KEYWORD):
                new_params.move_to_end(param_name)
            elif param.kind is _VAR_POSITIONAL:
                new_params.pop(param.name)

    return wrapped_sig.replace(parameters=new_params.values())


def _signature_bound_method(sig):
    """Private helper to transform signatures for unbound
    functions to bound methods.
    """

    params = tuple(sig.parameters.values())

    if not params or params[0].kind in (_VAR_KEYWORD, _KEYWORD_ONLY):
        raise ValueError('invalid method signature')

    kind = params[0].kind
    if kind in (_POSITIONAL_OR_KEYWORD, _POSITIONAL_ONLY):
        # Drop first parameter:
        # '(p1, p2[, ...])' -> '(p2[, ...])'
        params = params[1:]
    else:
        if kind is not _VAR_POSITIONAL:
            # Unless we add a new parameter type we never
            # get here
            raise ValueError('invalid argument type')
        # It's a var-positional parameter.
        # Do nothing. '(*args[, ...])' -> '(*args[, ...])'

    return sig.replace(parameters=params)


def _signature_is_builtin(obj):
    """Private helper to test if `obj` is a callable that might
    support Argument Clinic's __text_signature__ protocol.
    """
    return (isbuiltin(obj) or
            ismethoddescriptor(obj) or
            isinstance(obj, _NonUserDefinedCallables) or
            # Can't test 'isinstance(type)' here, as it would
            # also be True for regular python classes
            obj in (type, object))


def _signature_is_functionlike(obj):
    """Private helper to test if `obj` is a duck type of FunctionType.
    A good example of such objects are functions compiled with
    Cython, which have all attributes that a pure Python function
    would have, but have their code statically compiled.
    """

    if not callable(obj) or isclass(obj):
        # All function-like objects are obviously callables,
        # and not classes.
        return False

    name = getattr(obj, '__name__', None)
    code = getattr(obj, '__code__', None)
    defaults = getattr(obj, '__defaults__', _void) # Important to use _void ...
    kwdefaults = getattr(obj, '__kwdefaults__', _void) # ... and not None here
    annotations = getattr(obj, '__annotations__', None)

    return (isinstance(code, types.CodeType) and
            isinstance(name, str) and
            (defaults is None or isinstance(defaults, tuple)) and
            (kwdefaults is None or isinstance(kwdefaults, dict)) and
            (isinstance(annotations, (dict)) or annotations is None) )


def _signature_strip_non_python_syntax(signature):
    """
    Private helper function. Takes a signature in Argument Clinic's
    extended signature format.

    Returns a tuple of three things:
      * that signature re-rendered in standard Python syntax,
      * the index of the "self" parameter (generally 0), or None if
        the function does not have a "self" parameter, and
      * the index of the last "positional only" parameter,
        or None if the signature has no positional-only parameters.
    """

    if not signature:
        return signature, None, None

    self_parameter = None
    last_positional_only = None

    lines = [l.encode('ascii') for l in signature.split('\n') if l]
    generator = iter(lines).__next__
    token_stream = tokenize.tokenize(generator)

    delayed_comma = False
    skip_next_comma = False
    text = []
    add = text.append

    current_parameter = 0
    OP = token.OP
    ERRORTOKEN = token.ERRORTOKEN

    # token stream always starts with ENCODING token, skip it
    t = next(token_stream)
    assert t.type == tokenize.ENCODING

    for t in token_stream:
        type, string = t.type, t.string

        if type == OP:
            if string == ',':
                if skip_next_comma:
                    skip_next_comma = False
                else:
                    assert not delayed_comma
                    delayed_comma = True
                    current_parameter += 1
                continue

            if string == '/':
                assert not skip_next_comma
                assert last_positional_only is None
                skip_next_comma = True
                last_positional_only = current_parameter - 1
                continue

        if (type == ERRORTOKEN) and (string == '$'):
            assert self_parameter is None
            self_parameter = current_parameter
            continue

        if delayed_comma:
            delayed_comma = False
            if not ((type == OP) and (string == ')')):
                add(', ')
        add(string)
        if (string == ','):
            add(' ')
    clean_signature = ''.join(text)
    return clean_signature, self_parameter, last_positional_only


def _signature_fromstr(cls, obj, s, skip_bound_arg=True):
    """Private helper to parse content of '__text_signature__'
    and return a Signature based on it.
    """
    Parameter = cls._parameter_cls

    clean_signature, self_parameter, last_positional_only = \
        _signature_strip_non_python_syntax(s)

    program = "def foo" + clean_signature + ": pass"

    try:
        module = ast.parse(program)
    except SyntaxError:
        module = None

    if not isinstance(module, ast.Module):
        raise ValueError("{!r} builtin has invalid signature".format(obj))

    f = module.body[0]

    parameters = []
    empty = Parameter.empty

    module = None
    module_dict = {}
    module_name = getattr(obj, '__module__', None)
    if module_name:
        module = sys.modules.get(module_name, None)
        if module:
            module_dict = module.__dict__
    sys_module_dict = sys.modules.copy()

    def parse_name(node):
        assert isinstance(node, ast.arg)
        if node.annotation is not None:
            raise ValueError("Annotations are not currently supported")
        return node.arg

    def wrap_value(s):
        try:
            value = eval(s, module_dict)
        except NameError:
            try:
                value = eval(s, sys_module_dict)
            except NameError:
                raise ValueError

        if isinstance(value, (str, int, float, bytes, bool, type(None))):
            return ast.Constant(value)
        raise ValueError

    class RewriteSymbolics(ast.NodeTransformer):
        def visit_Attribute(self, node):
            a = []
            n = node
            while isinstance(n, ast.Attribute):
                a.append(n.attr)
                n = n.value
            if not isinstance(n, ast.Name):
                raise ValueError
            a.append(n.id)
            value = ".".join(reversed(a))
            return wrap_value(value)

        def visit_Name(self, node):
            if not isinstance(node.ctx, ast.Load):
                raise ValueError()
            return wrap_value(node.id)

        def visit_BinOp(self, node):
            # Support constant folding of a couple simple binary operations
            # commonly used to define default values in text signatures
            left = self.visit(node.left)
            right = self.visit(node.right)
            if not isinstance(left, ast.Constant) or not isinstance(right, ast.Constant):
                raise ValueError
            if isinstance(node.op, ast.Add):
                return ast.Constant(left.value + right.value)
            elif isinstance(node.op, ast.Sub):
                return ast.Constant(left.value - right.value)
            elif isinstance(node.op, ast.BitOr):
                return ast.Constant(left.value | right.value)
            raise ValueError

    def p(name_node, default_node, default=empty):
        name = parse_name(name_node)
        if default_node and default_node is not _empty:
            try:
                default_node = RewriteSymbolics().visit(default_node)
                default = ast.literal_eval(default_node)
            except ValueError:
                raise ValueError("{!r} builtin has invalid signature".format(obj)) from None
        parameters.append(Parameter(name, kind, default=default, annotation=empty))

    # non-keyword-only parameters
    args = reversed(f.args.args)
    defaults = reversed(f.args.defaults)
    iter = itertools.zip_longest(args, defaults, fillvalue=None)
    if last_positional_only is not None:
        kind = Parameter.POSITIONAL_ONLY
    else:
        kind = Parameter.POSITIONAL_OR_KEYWORD
    for i, (name, default) in enumerate(reversed(list(iter))):
        p(name, default)
        if i == last_positional_only:
            kind = Parameter.POSITIONAL_OR_KEYWORD

    # *args
    if f.args.vararg:
        kind = Parameter.VAR_POSITIONAL
        p(f.args.vararg, empty)

    # keyword-only arguments
    kind = Parameter.KEYWORD_ONLY
    for name, default in zip(f.args.kwonlyargs, f.args.kw_defaults):
        p(name, default)

    # **kwargs
    if f.args.kwarg:
        kind = Parameter.VAR_KEYWORD
        p(f.args.kwarg, empty)

    if self_parameter is not None:
        # Possibly strip the bound argument:
        #    - We *always* strip first bound argument if
        #      it is a module.
        #    - We don't strip first bound argument if
        #      skip_bound_arg is False.
        assert parameters
        _self = getattr(obj, '__self__', None)
        self_isbound = _self is not None
        self_ismodule = ismodule(_self)
        if self_isbound and (self_ismodule or skip_bound_arg):
            parameters.pop(0)
        else:
            # for builtins, self parameter is always positional-only!
            p = parameters[0].replace(kind=Parameter.POSITIONAL_ONLY)
            parameters[0] = p

    return cls(parameters, return_annotation=cls.empty)


def _signature_from_builtin(cls, func, skip_bound_arg=True):
    """Private helper function to get signature for
    builtin callables.
    """

    if not _signature_is_builtin(func):
        raise TypeError("{!r} is not a Python builtin "
                        "function".format(func))

    s = getattr(func, "__text_signature__", None)
    if not s:
        raise ValueError("no signature found for builtin {!r}".format(func))

    return _signature_fromstr(cls, func, s, skip_bound_arg)


def _signature_from_function(cls, func, skip_bound_arg=True,
                             globals=None, locals=None, eval_str=False):
    """Private helper: constructs Signature for the given python function."""

    is_duck_function = False
    if not isfunction(func):
        if _signature_is_functionlike(func):
            is_duck_function = True
        else:
            # If it's not a pure Python function, and not a duck type
            # of pure function:
            raise TypeError('{!r} is not a Python function'.format(func))

    s = getattr(func, "__text_signature__", None)
    if s:
        return _signature_fromstr(cls, func, s, skip_bound_arg)

    Parameter = cls._parameter_cls

    # Parameter information.
    func_code = func.__code__
    pos_count = func_code.co_argcount
    arg_names = func_code.co_varnames
    posonly_count = func_code.co_posonlyargcount
    positional = arg_names[:pos_count]
    keyword_only_count = func_code.co_kwonlyargcount
    keyword_only = arg_names[pos_count:pos_count + keyword_only_count]
    annotations = get_annotations(func, globals=globals, locals=locals, eval_str=eval_str)
    defaults = func.__defaults__
    kwdefaults = func.__kwdefaults__

    if defaults:
        pos_default_count = len(defaults)
    else:
        pos_default_count = 0

    parameters = []

    non_default_count = pos_count - pos_default_count
    posonly_left = posonly_count

    # Non-keyword-only parameters w/o defaults.
    for name in positional[:non_default_count]:
        kind = _POSITIONAL_ONLY if posonly_left else _POSITIONAL_OR_KEYWORD
        annotation = annotations.get(name, _empty)
        parameters.append(Parameter(name, annotation=annotation,
                                    kind=kind))
        if posonly_left:
            posonly_left -= 1

    # ... w/ defaults.
    for offset, name in enumerate(positional[non_default_count:]):
        kind = _POSITIONAL_ONLY if posonly_left else _POSITIONAL_OR_KEYWORD
        annotation = annotations.get(name, _empty)
        parameters.append(Parameter(name, annotation=annotation,
                                    kind=kind,
                                    default=defaults[offset]))
        if posonly_left:
            posonly_left -= 1

    # *args
    if func_code.co_flags & CO_VARARGS:
        name = arg_names[pos_count + keyword_only_count]
        annotation = annotations.get(name, _empty)
        parameters.append(Parameter(name, annotation=annotation,
                                    kind=_VAR_POSITIONAL))

    # Keyword-only parameters.
    for name in keyword_only:
        default = _empty
        if kwdefaults is not None:
            default = kwdefaults.get(name, _empty)

        annotation = annotations.get(name, _empty)
        parameters.append(Parameter(name, annotation=annotation,
                                    kind=_KEYWORD_ONLY,
                                    default=default))
    # **kwargs
    if func_code.co_flags & CO_VARKEYWORDS:
        index = pos_count + keyword_only_count
        if func_code.co_flags & CO_VARARGS:
            index += 1

        name = arg_names[index]
        annotation = annotations.get(name, _empty)
        parameters.append(Parameter(name, annotation=annotation,
                                    kind=_VAR_KEYWORD))

    # Is 'func' is a pure Python function - don't validate the
    # parameters list (for correct order and defaults), it should be OK.
    return cls(parameters,
               return_annotation=annotations.get('return', _empty),
               __validate_parameters__=is_duck_function)


def _signature_from_callable(obj, *,
                             follow_wrapper_chains=True,
                             skip_bound_arg=True,
                             globals=None,
                             locals=None,
                             eval_str=False,
                             sigcls):

    """Private helper function to get signature for arbitrary
    callable objects.
    """

    _get_signature_of = functools.partial(_signature_from_callable,
                                follow_wrapper_chains=follow_wrapper_chains,
                                skip_bound_arg=skip_bound_arg,
                                globals=globals,
                                locals=locals,
                                sigcls=sigcls,
                                eval_str=eval_str)

    if not callable(obj):
        raise TypeError('{!r} is not a callable object'.format(obj))

    if isinstance(obj, types.MethodType):
        # In this case we skip the first parameter of the underlying
        # function (usually `self` or `cls`).
        sig = _get_signature_of(obj.__func__)

        if skip_bound_arg:
            return _signature_bound_method(sig)
        else:
            return sig

    # Was this function wrapped by a decorator?
    if follow_wrapper_chains:
        # Unwrap until we find an explicit signature or a MethodType (which will be
        # handled explicitly below).
        obj = unwrap(obj, stop=(lambda f: hasattr(f, "__signature__")
                                or isinstance(f, types.MethodType)))
        if isinstance(obj, types.MethodType):
            # If the unwrapped object is a *method*, we might want to
            # skip its first parameter (self).
            # See test_signature_wrapped_bound_method for details.
            return _get_signature_of(obj)

    try:
        sig = obj.__signature__
    except AttributeError:
        pass
    else:
        if sig is not None:
            if not isinstance(sig, Signature):
                raise TypeError(
                    'unexpected object {!r} in __signature__ '
                    'attribute'.format(sig))
            return sig

    try:
        partialmethod = obj._partialmethod
    except AttributeError:
        pass
    else:
        if isinstance(partialmethod, functools.partialmethod):
            # Unbound partialmethod (see functools.partialmethod)
            # This means, that we need to calculate the signature
            # as if it's a regular partial object, but taking into
            # account that the first positional argument
            # (usually `self`, or `cls`) will not be passed
            # automatically (as for boundmethods)

            wrapped_sig = _get_signature_of(partialmethod.func)

            sig = _signature_get_partial(wrapped_sig, partialmethod, (None,))
            first_wrapped_param = tuple(wrapped_sig.parameters.values())[0]
            if first_wrapped_param.kind is Parameter.VAR_POSITIONAL:
                # First argument of the wrapped callable is `*args`, as in
                # `partialmethod(lambda *args)`.
                return sig
            else:
                sig_params = tuple(sig.parameters.values())
                assert (not sig_params or
                        first_wrapped_param is not sig_params[0])
                new_params = (first_wrapped_param,) + sig_params
                return sig.replace(parameters=new_params)

    if isfunction(obj) or _signature_is_functionlike(obj):
        # If it's a pure Python function, or an object that is duck type
        # of a Python function (Cython functions, for instance), then:
        return _signature_from_function(sigcls, obj,
                                        skip_bound_arg=skip_bound_arg,
                                        globals=globals, locals=locals, eval_str=eval_str)

    if _signature_is_builtin(obj):
        return _signature_from_builtin(sigcls, obj,
                                       skip_bound_arg=skip_bound_arg)

    if isinstance(obj, functools.partial):
        wrapped_sig = _get_signature_of(obj.func)
        return _signature_get_partial(wrapped_sig, obj)

    sig = None
    if isinstance(obj, type):
        # obj is a class or a metaclass

        # First, let's see if it has an overloaded __call__ defined
        # in its metaclass
        call = _signature_get_user_defined_method(type(obj), '__call__')
        if call is not None:
            sig = _get_signature_of(call)
        else:
            factory_method = None
            new = _signature_get_user_defined_method(obj, '__new__')
            init = _signature_get_user_defined_method(obj, '__init__')
            # Now we check if the 'obj' class has an own '__new__' method
            if '__new__' in obj.__dict__:
                factory_method = new
            # or an own '__init__' method
            elif '__init__' in obj.__dict__:
                factory_method = init
            # If not, we take inherited '__new__' or '__init__', if present
            elif new is not None:
                factory_method = new
            elif init is not None:
                factory_method = init

            if factory_method is not None:
                sig = _get_signature_of(factory_method)

        if sig is None:
            # At this point we know, that `obj` is a class, with no user-
            # defined '__init__', '__new__', or class-level '__call__'

            for base in obj.__mro__[:-1]:
                # Since '__text_signature__' is implemented as a
                # descriptor that extracts text signature from the
                # class docstring, if 'obj' is derived from a builtin
                # class, its own '__text_signature__' may be 'None'.
                # Therefore, we go through the MRO (except the last
                # class in there, which is 'object') to find the first
                # class with non-empty text signature.
                try:
                    text_sig = base.__text_signature__
                except AttributeError:
                    pass
                else:
                    if text_sig:
                        # If 'base' class has a __text_signature__ attribute:
                        # return a signature based on it
                        return _signature_fromstr(sigcls, base, text_sig)

            # No '__text_signature__' was found for the 'obj' class.
            # Last option is to check if its '__init__' is
            # object.__init__ or type.__init__.
            if type not in obj.__mro__:
                # We have a class (not metaclass), but no user-defined
                # __init__ or __new__ for it
                if (obj.__init__ is object.__init__ and
                    obj.__new__ is object.__new__):
                    # Return a signature of 'object' builtin.
                    return sigcls.from_callable(object)
                else:
                    raise ValueError(
                        'no signature found for builtin type {!r}'.format(obj))

    elif not isinstance(obj, _NonUserDefinedCallables):
        # An object with __call__
        # We also check that the 'obj' is not an instance of
        # types.WrapperDescriptorType or types.MethodWrapperType to avoid
        # infinite recursion (and even potential segfault)
        call = _signature_get_user_defined_method(type(obj), '__call__')
        if call is not None:
            try:
                sig = _get_signature_of(call)
            except ValueError as ex:
                msg = 'no signature found for {!r}'.format(obj)
                raise ValueError(msg) from ex

    if sig is not None:
        # For classes and objects we skip the first parameter of their
        # __call__, __new__, or __init__ methods
        if skip_bound_arg:
            return _signature_bound_method(sig)
        else:
            return sig

    if isinstance(obj, types.BuiltinFunctionType):
        # Raise a nicer error message for builtins
        msg = 'no signature found for builtin function {!r}'.format(obj)
        raise ValueError(msg)

    raise ValueError('callable {!r} is not supported by signature'.format(obj))


class _void:
    """A private marker - used in Parameter & Signature."""


class _empty:
    """Marker object for Signature.empty and Parameter.empty."""


class _ParameterKind(enum.IntEnum):
    POSITIONAL_ONLY = 'positional-only'
    POSITIONAL_OR_KEYWORD = 'positional or keyword'
    VAR_POSITIONAL = 'variadic positional'
    KEYWORD_ONLY = 'keyword-only'
    VAR_KEYWORD = 'variadic keyword'

    def __new__(cls, description):
        value = len(cls.__members__)
        member = int.__new__(cls, value)
        member._value_ = value
        member.description = description
        return member

    def __str__(self):
        return self.name

_POSITIONAL_ONLY         = _ParameterKind.POSITIONAL_ONLY
_POSITIONAL_OR_KEYWORD   = _ParameterKind.POSITIONAL_OR_KEYWORD
_VAR_POSITIONAL          = _ParameterKind.VAR_POSITIONAL
_KEYWORD_ONLY            = _ParameterKind.KEYWORD_ONLY
_VAR_KEYWORD             = _ParameterKind.VAR_KEYWORD


class Parameter:
    """Represents a parameter in a function signature.

    Has the following public attributes:

    * name : str
        The name of the parameter as a string.
    * default : object
        The default value for the parameter if specified.  If the
        parameter has no default value, this attribute is set to
        `Parameter.empty`.
    * annotation
        The annotation for the parameter if specified.  If the
        parameter has no annotation, this attribute is set to
        `Parameter.empty`.
    * kind : str
        Describes how argument values are bound to the parameter.
        Possible values: `Parameter.POSITIONAL_ONLY`,
        `Parameter.POSITIONAL_OR_KEYWORD`, `Parameter.VAR_POSITIONAL`,
        `Parameter.KEYWORD_ONLY`, `Parameter.VAR_KEYWORD`.
    """

    __slots__ = ('_name', '_kind', '_default', '_annotation')

    POSITIONAL_ONLY         = _POSITIONAL_ONLY
    POSITIONAL_OR_KEYWORD   = _POSITIONAL_OR_KEYWORD
    VAR_POSITIONAL          = _VAR_POSITIONAL
    KEYWORD_ONLY            = _KEYWORD_ONLY
    VAR_KEYWORD             = _VAR_KEYWORD

    empty = _empty

    def __init__(self, name, kind, *, default=_empty, annotation=_empty):
        try:
            self._kind = _ParameterKind(kind)
        except ValueError:
            raise ValueError(f'value {kind!r} is not a valid Parameter.kind')
        if default is not _empty:
            if self._kind in (_VAR_POSITIONAL, _VAR_KEYWORD):
                msg = '{} parameters cannot have default values'
                msg = msg.format(self._kind.description)
                raise ValueError(msg)
        self._default = default
        self._annotation = annotation

        if name is _empty:
            raise ValueError('name is a required attribute for Parameter')

        if not isinstance(name, str):
            msg = 'name must be a str, not a {}'.format(type(name).__name__)
            raise TypeError(msg)

        if name[0] == '.' and name[1:].isdigit():
            # These are implicit arguments generated by comprehensions. In
            # order to provide a friendlier interface to users, we recast
            # their name as "implicitN" and treat them as positional-only.
            # See issue 19611.
            if self._kind != _POSITIONAL_OR_KEYWORD:
                msg = (
                    'implicit arguments must be passed as '
                    'positional or keyword arguments, not {}'
                )
                msg = msg.format(self._kind.description)
                raise ValueError(msg)
            self._kind = _POSITIONAL_ONLY
            name = 'implicit{}'.format(name[1:])

        # It's possible for C functions to have a positional-only parameter
        # where the name is a keyword, so for compatibility we'll allow it.
        is_keyword = iskeyword(name) and self._kind is not _POSITIONAL_ONLY
        if is_keyword or not name.isidentifier():
            raise ValueError('{!r} is not a valid parameter name'.format(name))

        self._name = name

    def __reduce__(self):
        return (type(self),
                (self._name, self._kind),
                {'_default': self._default,
                 '_annotation': self._annotation})

    def __setstate__(self, state):
        self._default = state['_default']
        self._annotation = state['_annotation']

    @property
    def name(self):
        return self._name

    @property
    def default(self):
        return self._default

    @property
    def annotation(self):
        return self._annotation

    @property
    def kind(self):
        return self._kind

    def replace(self, *, name=_void, kind=_void,
                annotation=_void, default=_void):
        """Creates a customized copy of the Parameter."""

        if name is _void:
            name = self._name

        if kind is _void:
            kind = self._kind

        if annotation is _void:
            annotation = self._annotation

        if default is _void:
            default = self._default

        return type(self)(name, kind, default=default, annotation=annotation)

    def __str__(self):
        kind = self.kind
        formatted = self._name

        # Add annotation and default value
        if self._annotation is not _empty:
            formatted = '{}: {}'.format(formatted,
                                       formatannotation(self._annotation))

        if self._default is not _empty:
            if self._annotation is not _empty:
                formatted = '{} = {}'.format(formatted, repr(self._default))
            else:
                formatted = '{}={}'.format(formatted, repr(self._default))

        if kind == _VAR_POSITIONAL:
            formatted = '*' + formatted
        elif kind == _VAR_KEYWORD:
            formatted = '**' + formatted

        return formatted

    def __repr__(self):
        return '<{} "{}">'.format(self.__class__.__name__, self)

    def __hash__(self):
        return hash((self.name, self.kind, self.annotation, self.default))

    def __eq__(self, other):
        if self is other:
            return True
        if not isinstance(other, Parameter):
            return NotImplemented
        return (self._name == other._name and
                self._kind == other._kind and
                self._default == other._default and
                self._annotation == other._annotation)


class BoundArguments:
    """Result of `Signature.bind` call.  Holds the mapping of arguments
    to the function's parameters.

    Has the following public attributes:

    * arguments : dict
        An ordered mutable mapping of parameters' names to arguments' values.
        Does not contain arguments' default values.
    * signature : Signature
        The Signature object that created this instance.
    * args : tuple
        Tuple of positional arguments values.
    * kwargs : dict
        Dict of keyword arguments values.
    """

    __slots__ = ('arguments', '_signature', '__weakref__')

    def __init__(self, signature, arguments):
        self.arguments = arguments
        self._signature = signature

    @property
    def signature(self):
        return self._signature

    @property
    def args(self):
        args = []
        for param_name, param in self._signature.parameters.items():
            if param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY):
                break

            try:
                arg = self.arguments[param_name]
            except KeyError:
                # We're done here. Other arguments
                # will be mapped in 'BoundArguments.kwargs'
                break
            else:
                if param.kind == _VAR_POSITIONAL:
                    # *args
                    args.extend(arg)
                else:
                    # plain argument
                    args.append(arg)

        return tuple(args)

    @property
    def kwargs(self):
        kwargs = {}
        kwargs_started = False
        for param_name, param in self._signature.parameters.items():
            if not kwargs_started:
                if param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY):
                    kwargs_started = True
                else:
                    if param_name not in self.arguments:
                        kwargs_started = True
                        continue

            if not kwargs_started:
                continue

            try:
                arg = self.arguments[param_name]
            except KeyError:
                pass
            else:
                if param.kind == _VAR_KEYWORD:
                    # **kwargs
                    kwargs.update(arg)
                else:
                    # plain keyword argument
                    kwargs[param_name] = arg

        return kwargs

    def apply_defaults(self):
        """Set default values for missing arguments.

        For variable-positional arguments (*args) the default is an
        empty tuple.

        For variable-keyword arguments (**kwargs) the default is an
        empty dict.
        """
        arguments = self.arguments
        new_arguments = []
        for name, param in self._signature.parameters.items():
            try:
                new_arguments.append((name, arguments[name]))
            except KeyError:
                if param.default is not _empty:
                    val = param.default
                elif param.kind is _VAR_POSITIONAL:
                    val = ()
                elif param.kind is _VAR_KEYWORD:
                    val = {}
                else:
                    # This BoundArguments was likely produced by
                    # Signature.bind_partial().
                    continue
                new_arguments.append((name, val))
        self.arguments = dict(new_arguments)

    def __eq__(self, other):
        if self is other:
            return True
        if not isinstance(other, BoundArguments):
            return NotImplemented
        return (self.signature == other.signature and
                self.arguments == other.arguments)

    def __setstate__(self, state):
        self._signature = state['_signature']
        self.arguments = state['arguments']

    def __getstate__(self):
        return {'_signature': self._signature, 'arguments': self.arguments}

    def __repr__(self):
        args = []
        for arg, value in self.arguments.items():
            args.append('{}={!r}'.format(arg, value))
        return '<{} ({})>'.format(self.__class__.__name__, ', '.join(args))


class Signature:
    """A Signature object represents the overall signature of a function.
    It stores a Parameter object for each parameter accepted by the
    function, as well as information specific to the function itself.

    A Signature object has the following public attributes and methods:

    * parameters : OrderedDict
        An ordered mapping of parameters' names to the corresponding
        Parameter objects (keyword-only arguments are in the same order
        as listed in `code.co_varnames`).
    * return_annotation : object
        The annotation for the return type of the function if specified.
        If the function has no annotation for its return type, this
        attribute is set to `Signature.empty`.
    * bind(*args, **kwargs) -> BoundArguments
        Creates a mapping from positional and keyword arguments to
        parameters.
    * bind_partial(*args, **kwargs) -> BoundArguments
        Creates a partial mapping from positional and keyword arguments
        to parameters (simulating 'functools.partial' behavior.)
    """

    __slots__ = ('_return_annotation', '_parameters')

    _parameter_cls = Parameter
    _bound_arguments_cls = BoundArguments

    empty = _empty

    def __init__(self, parameters=None, *, return_annotation=_empty,
                 __validate_parameters__=True):
        """Constructs Signature from the given list of Parameter
        objects and 'return_annotation'.  All arguments are optional.
        """

        if parameters is None:
            params = OrderedDict()
        else:
            if __validate_parameters__:
                params = OrderedDict()
                top_kind = _POSITIONAL_ONLY
                kind_defaults = False

                for param in parameters:
                    kind = param.kind
                    name = param.name

                    if kind < top_kind:
                        msg = (
                            'wrong parameter order: {} parameter before {} '
                            'parameter'
                        )
                        msg = msg.format(top_kind.description,
                                         kind.description)
                        raise ValueError(msg)
                    elif kind > top_kind:
                        kind_defaults = False
                        top_kind = kind

                    if kind in (_POSITIONAL_ONLY, _POSITIONAL_OR_KEYWORD):
                        if param.default is _empty:
                            if kind_defaults:
                                # No default for this parameter, but the
                                # previous parameter of the same kind had
                                # a default
                                msg = 'non-default argument follows default ' \
                                      'argument'
                                raise ValueError(msg)
                        else:
                            # There is a default for this parameter.
                            kind_defaults = True

                    if name in params:
                        msg = 'duplicate parameter name: {!r}'.format(name)
                        raise ValueError(msg)

                    params[name] = param
            else:
                params = OrderedDict((param.name, param) for param in parameters)

        self._parameters = types.MappingProxyType(params)
        self._return_annotation = return_annotation

    @classmethod
    def from_callable(cls, obj, *,
                      follow_wrapped=True, globals=None, locals=None, eval_str=False):
        """Constructs Signature for the given callable object."""
        return _signature_from_callable(obj, sigcls=cls,
                                        follow_wrapper_chains=follow_wrapped,
                                        globals=globals, locals=locals, eval_str=eval_str)

    @property
    def parameters(self):
        return self._parameters

    @property
    def return_annotation(self):
        return self._return_annotation

    def replace(self, *, parameters=_void, return_annotation=_void):
        """Creates a customized copy of the Signature.
        Pass 'parameters' and/or 'return_annotation' arguments
        to override them in the new copy.
        """

        if parameters is _void:
            parameters = self.parameters.values()

        if return_annotation is _void:
            return_annotation = self._return_annotation

        return type(self)(parameters,
                          return_annotation=return_annotation)

    def _hash_basis(self):
        params = tuple(param for param in self.parameters.values()
                             if param.kind != _KEYWORD_ONLY)

        kwo_params = {param.name: param for param in self.parameters.values()
                                        if param.kind == _KEYWORD_ONLY}

        return params, kwo_params, self.return_annotation

    def __hash__(self):
        params, kwo_params, return_annotation = self._hash_basis()
        kwo_params = frozenset(kwo_params.values())
        return hash((params, kwo_params, return_annotation))

    def __eq__(self, other):
        if self is other:
            return True
        if not isinstance(other, Signature):
            return NotImplemented
        return self._hash_basis() == other._hash_basis()

    def _bind(self, args, kwargs, *, partial=False):
        """Private method. Don't use directly."""

        arguments = {}

        parameters = iter(self.parameters.values())
        parameters_ex = ()
        arg_vals = iter(args)

        while True:
            # Let's iterate through the positional arguments and corresponding
            # parameters
            try:
                arg_val = next(arg_vals)
            except StopIteration:
                # No more positional arguments
                try:
                    param = next(parameters)
                except StopIteration:
                    # No more parameters. That's it. Just need to check that
                    # we have no `kwargs` after this while loop
                    break
                else:
                    if param.kind == _VAR_POSITIONAL:
                        # That's OK, just empty *args.  Let's start parsing
                        # kwargs
                        break
                    elif param.name in kwargs:
                        if param.kind == _POSITIONAL_ONLY:
                            msg = '{arg!r} parameter is positional only, ' \
                                  'but was passed as a keyword'
                            msg = msg.format(arg=param.name)
                            raise TypeError(msg) from None
                        parameters_ex = (param,)
                        break
                    elif (param.kind == _VAR_KEYWORD or
                                                param.default is not _empty):
                        # That's fine too - we have a default value for this
                        # parameter.  So, lets start parsing `kwargs`, starting
                        # with the current parameter
                        parameters_ex = (param,)
                        break
                    else:
                        # No default, not VAR_KEYWORD, not VAR_POSITIONAL,
                        # not in `kwargs`
                        if partial:
                            parameters_ex = (param,)
                            break
                        else:
                            msg = 'missing a required argument: {arg!r}'
                            msg = msg.format(arg=param.name)
                            raise TypeError(msg) from None
            else:
                # We have a positional argument to process
                try:
                    param = next(parameters)
                except StopIteration:
                    raise TypeError('too many positional arguments') from None
                else:
                    if param.kind in (_VAR_KEYWORD, _KEYWORD_ONLY):
                        # Looks like we have no parameter for this positional
                        # argument
                        raise TypeError(
                            'too many positional arguments') from None

                    if param.kind == _VAR_POSITIONAL:
                        # We have an '*args'-like argument, let's fill it with
                        # all positional arguments we have left and move on to
                        # the next phase
                        values = [arg_val]
                        values.extend(arg_vals)
                        arguments[param.name] = tuple(values)
                        break

                    if param.name in kwargs and param.kind != _POSITIONAL_ONLY:
                        raise TypeError(
                            'multiple values for argument {arg!r}'.format(
                                arg=param.name)) from None

                    arguments[param.name] = arg_val

        # Now, we iterate through the remaining parameters to process
        # keyword arguments
        kwargs_param = None
        for param in itertools.chain(parameters_ex, parameters):
            if param.kind == _VAR_KEYWORD:
                # Memorize that we have a '**kwargs'-like parameter
                kwargs_param = param
                continue

            if param.kind == _VAR_POSITIONAL:
                # Named arguments don't refer to '*args'-like parameters.
                # We only arrive here if the positional arguments ended
                # before reaching the last parameter before *args.
                continue

            param_name = param.name
            try:
                arg_val = kwargs.pop(param_name)
            except KeyError:
                # We have no value for this parameter.  It's fine though,
                # if it has a default value, or it is an '*args'-like
                # parameter, left alone by the processing of positional
                # arguments.
                if (not partial and param.kind != _VAR_POSITIONAL and
                                                    param.default is _empty):
                    raise TypeError('missing a required argument: {arg!r}'. \
                                    format(arg=param_name)) from None

            else:
                if param.kind == _POSITIONAL_ONLY:
                    # This should never happen in case of a properly built
                    # Signature object (but let's have this check here
                    # to ensure correct behaviour just in case)
                    raise TypeError('{arg!r} parameter is positional only, '
                                    'but was passed as a keyword'. \
                                    format(arg=param.name))

                arguments[param_name] = arg_val

        if kwargs:
            if kwargs_param is not None:
                # Process our '**kwargs'-like parameter
                arguments[kwargs_param.name] = kwargs
            else:
                raise TypeError(
                    'got an unexpected keyword argument {arg!r}'.format(
                        arg=next(iter(kwargs))))

        return self._bound_arguments_cls(self, arguments)

    def bind(self, /, *args, **kwargs):
        """Get a BoundArguments object, that maps the passed `args`
        and `kwargs` to the function's signature.  Raises `TypeError`
        if the passed arguments can not be bound.
        """
        return self._bind(args, kwargs)

    def bind_partial(self, /, *args, **kwargs):
        """Get a BoundArguments object, that partially maps the
        passed `args` and `kwargs` to the function's signature.
        Raises `TypeError` if the passed arguments can not be bound.
        """
        return self._bind(args, kwargs, partial=True)

    def __reduce__(self):
        return (type(self),
                (tuple(self._parameters.values()),),
                {'_return_annotation': self._return_annotation})

    def __setstate__(self, state):
        self._return_annotation = state['_return_annotation']

    def __repr__(self):
        return '<{} {}>'.format(self.__class__.__name__, self)

    def __str__(self):
        result = []
        render_pos_only_separator = False
        render_kw_only_separator = True
        for param in self.parameters.values():
            formatted = str(param)

            kind = param.kind

            if kind == _POSITIONAL_ONLY:
                render_pos_only_separator = True
            elif render_pos_only_separator:
                # It's not a positional-only parameter, and the flag
                # is set to 'True' (there were pos-only params before.)
                result.append('/')
                render_pos_only_separator = False

            if kind == _VAR_POSITIONAL:
                # OK, we have an '*args'-like parameter, so we won't need
                # a '*' to separate keyword-only arguments
                render_kw_only_separator = False
            elif kind == _KEYWORD_ONLY and render_kw_only_separator:
                # We have a keyword-only parameter to render and we haven't
                # rendered an '*args'-like parameter before, so add a '*'
                # separator to the parameters list ("foo(arg1, *, arg2)" case)
                result.append('*')
                # This condition should be only triggered once, so
                # reset the flag
                render_kw_only_separator = False

            result.append(formatted)

        if render_pos_only_separator:
            # There were only positional-only parameters, hence the
            # flag was not reset to 'False'
            result.append('/')

        rendered = '({})'.format(', '.join(result))

        if self.return_annotation is not _empty:
            anno = formatannotation(self.return_annotation)
            rendered += ' -> {}'.format(anno)

        return rendered


def signature(obj, *, follow_wrapped=True, globals=None, locals=None, eval_str=False):
    """Get a signature object for the passed callable."""
    return Signature.from_callable(obj, follow_wrapped=follow_wrapped,
                                   globals=globals, locals=locals, eval_str=eval_str)


def _main():
    """ Logic for inspecting an object given at command line """
    import argparse
    import importlib

    parser = argparse.ArgumentParser()
    parser.add_argument(
        'object',
         help="The object to be analysed. "
              "It supports the 'module:qualname' syntax")
    parser.add_argument(
        '-d', '--details', action='store_true',
        help='Display info about the module rather than its source code')

    args = parser.parse_args()

    target = args.object
    mod_name, has_attrs, attrs = target.partition(":")
    try:
        obj = module = importlib.import_module(mod_name)
    except Exception as exc:
        msg = "Failed to import {} ({}: {})".format(mod_name,
                                                    type(exc).__name__,
                                                    exc)
        print(msg, file=sys.stderr)
        sys.exit(2)

    if has_attrs:
        parts = attrs.split(".")
        obj = module
        for part in parts:
            obj = getattr(obj, part)

    if module.__name__ in sys.builtin_module_names:
        print("Can't get info for builtin modules.", file=sys.stderr)
        sys.exit(1)

    if args.details:
        print('Target: {}'.format(target))
        print('Origin: {}'.format(getsourcefile(module)))
        print('Cached: {}'.format(module.__cached__))
        if obj is module:
            print('Loader: {}'.format(repr(module.__loader__)))
            if hasattr(module, '__path__'):
                print('Submodule search path: {}'.format(module.__path__))
        else:
            try:
                __, lineno = findsource(obj)
            except Exception:
                pass
            else:
                print('Line: {}'.format(lineno))

        print('\n')
    else:
        print(getsource(obj))


if __name__ == "__main__":
    _main()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ,  .   ,  ..  ,  LICENSE #f  dist-cjs&f  dist-es qr  package.json t  	README.md   yu 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        &s>:# Copyright 2007 Google Inc.
#  Licensed to PSF under a Contributor Agreement.

"""A fast, lightweight IPv4/IPv6 manipulation library in Python.

This library is used to create/poke/manipulate IPv4 and IPv6 addresses
and networks.

"""

__version__ = '1.0'


import functools

IPV4LENGTH = 32
IPV6LENGTH = 128


class AddressValueError(ValueError):
    """A Value Error related to the address."""


class NetmaskValueError(ValueError):
    """A Value Error related to the netmask."""


def ip_address(address):
    """Take an IP string/int and return an object of the correct type.

    Args:
        address: A string or integer, the IP address.  Either IPv4 or
          IPv6 addresses may be supplied; integers less than 2**32 will
          be considered to be IPv4 by default.

    Returns:
        An IPv4Address or IPv6Address object.

    Raises:
        ValueError: if the *address* passed isn't either a v4 or a v6
          address

    """
    try:
        return IPv4Address(address)
    except (AddressValueError, NetmaskValueError):
        pass

    try:
        return IPv6Address(address)
    except (AddressValueError, NetmaskValueError):
        pass

    raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')


def ip_network(address, strict=True):
    """Take an IP string/int and return an object of the correct type.

    Args:
        address: A string or integer, the IP network.  Either IPv4 or
          IPv6 networks may be supplied; integers less than 2**32 will
          be considered to be IPv4 by default.

    Returns:
        An IPv4Network or IPv6Network object.

    Raises:
        ValueError: if the string passed isn't either a v4 or a v6
          address. Or if the network has host bits set.

    """
    try:
        return IPv4Network(address, strict)
    except (AddressValueError, NetmaskValueError):
        pass

    try:
        return IPv6Network(address, strict)
    except (AddressValueError, NetmaskValueError):
        pass

    raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 network')


def ip_interface(address):
    """Take an IP string/int and return an object of the correct type.

    Args:
        address: A string or integer, the IP address.  Either IPv4 or
          IPv6 addresses may be supplied; integers less than 2**32 will
          be considered to be IPv4 by default.

    Returns:
        An IPv4Interface or IPv6Interface object.

    Raises:
        ValueError: if the string passed isn't either a v4 or a v6
          address.

    Notes:
        The IPv?Interface classes describe an Address on a particular
        Network, so they're basically a combination of both the Address
        and Network classes.

    """
    try:
        return IPv4Interface(address)
    except (AddressValueError, NetmaskValueError):
        pass

    try:
        return IPv6Interface(address)
    except (AddressValueError, NetmaskValueError):
        pass

    raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 interface')


def v4_int_to_packed(address):
    """Represent an address as 4 packed bytes in network (big-endian) order.

    Args:
        address: An integer representation of an IPv4 IP address.

    Returns:
        The integer address packed as 4 bytes in network (big-endian) order.

    Raises:
        ValueError: If the integer is negative or too large to be an
          IPv4 IP address.

    """
    try:
        return address.to_bytes(4)  # big endian
    except OverflowError:
        raise ValueError("Address negative or too large for IPv4")


def v6_int_to_packed(address):
    """Represent an address as 16 packed bytes in network (big-endian) order.

    Args:
        address: An integer representation of an IPv6 IP address.

    Returns:
        The integer address packed as 16 bytes in network (big-endian) order.

    """
    try:
        return address.to_bytes(16)  # big endian
    except OverflowError:
        raise ValueError("Address negative or too large for IPv6")


def _split_optional_netmask(address):
    """Helper to split the netmask and raise AddressValueError if needed"""
    addr = str(address).split('/')
    if len(addr) > 2:
        raise AddressValueError(f"Only one '/' permitted in {address!r}")
    return addr


def _find_address_range(addresses):
    """Find a sequence of sorted deduplicated IPv#Address.

    Args:
        addresses: a list of IPv#Address objects.

    Yields:
        A tuple containing the first and last IP addresses in the sequence.

    """
    it = iter(addresses)
    first = last = next(it)
    for ip in it:
        if ip._ip != last._ip + 1:
            yield first, last
            first = ip
        last = ip
    yield first, last


def _count_righthand_zero_bits(number, bits):
    """Count the number of zero bits on the right hand side.

    Args:
        number: an integer.
        bits: maximum number of bits to count.

    Returns:
        The number of zero bits on the right hand side of the number.

    """
    if number == 0:
        return bits
    return min(bits, (~number & (number-1)).bit_length())


def summarize_address_range(first, last):
    """Summarize a network range given the first and last IP addresses.

    Example:
        >>> list(summarize_address_range(IPv4Address('192.0.2.0'),
        ...                              IPv4Address('192.0.2.130')))
        ...                                #doctest: +NORMALIZE_WHITESPACE
        [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/31'),
         IPv4Network('192.0.2.130/32')]

    Args:
        first: the first IPv4Address or IPv6Address in the range.
        last: the last IPv4Address or IPv6Address in the range.

    Returns:
        An iterator of the summarized IPv(4|6) network objects.

    Raise:
        TypeError:
            If the first and last objects are not IP addresses.
            If the first and last objects are not the same version.
        ValueError:
            If the last object is not greater than the first.
            If the version of the first address is not 4 or 6.

    """
    if (not (isinstance(first, _BaseAddress) and
             isinstance(last, _BaseAddress))):
        raise TypeError('first and last must be IP addresses, not networks')
    if first.version != last.version:
        raise TypeError("%s and %s are not of the same version" % (
                         first, last))
    if first > last:
        raise ValueError('last IP address must be greater than first')

    if first.version == 4:
        ip = IPv4Network
    elif first.version == 6:
        ip = IPv6Network
    else:
        raise ValueError('unknown IP version')

    ip_bits = first._max_prefixlen
    first_int = first._ip
    last_int = last._ip
    while first_int <= last_int:
        nbits = min(_count_righthand_zero_bits(first_int, ip_bits),
                    (last_int - first_int + 1).bit_length() - 1)
        net = ip((first_int, ip_bits - nbits))
        yield net
        first_int += 1 << nbits
        if first_int - 1 == ip._ALL_ONES:
            break


def _collapse_addresses_internal(addresses):
    """Loops through the addresses, collapsing concurrent netblocks.

    Example:

        ip1 = IPv4Network('192.0.2.0/26')
        ip2 = IPv4Network('192.0.2.64/26')
        ip3 = IPv4Network('192.0.2.128/26')
        ip4 = IPv4Network('192.0.2.192/26')

        _collapse_addresses_internal([ip1, ip2, ip3, ip4]) ->
          [IPv4Network('192.0.2.0/24')]

        This shouldn't be called directly; it is called via
          collapse_addresses([]).

    Args:
        addresses: A list of IPv4Network's or IPv6Network's

    Returns:
        A list of IPv4Network's or IPv6Network's depending on what we were
        passed.

    """
    # First merge
    to_merge = list(addresses)
    subnets = {}
    while to_merge:
        net = to_merge.pop()
        supernet = net.supernet()
        existing = subnets.get(supernet)
        if existing is None:
            subnets[supernet] = net
        elif existing != net:
            # Merge consecutive subnets
            del subnets[supernet]
            to_merge.append(supernet)
    # Then iterate over resulting networks, skipping subsumed subnets
    last = None
    for net in sorted(subnets.values()):
        if last is not None:
            # Since they are sorted, last.network_address <= net.network_address
            # is a given.
            if last.broadcast_address >= net.broadcast_address:
                continue
        yield net
        last = net


def collapse_addresses(addresses):
    """Collapse a list of IP objects.

    Example:
        collapse_addresses([IPv4Network('192.0.2.0/25'),
                            IPv4Network('192.0.2.128/25')]) ->
                           [IPv4Network('192.0.2.0/24')]

    Args:
        addresses: An iterator of IPv4Network or IPv6Network objects.

    Returns:
        An iterator of the collapsed IPv(4|6)Network objects.

    Raises:
        TypeError: If passed a list of mixed version objects.

    """
    addrs = []
    ips = []
    nets = []

    # split IP addresses and networks
    for ip in addresses:
        if isinstance(ip, _BaseAddress):
            if ips and ips[-1]._version != ip._version:
                raise TypeError("%s and %s are not of the same version" % (
                                 ip, ips[-1]))
            ips.append(ip)
        elif ip._prefixlen == ip._max_prefixlen:
            if ips and ips[-1]._version != ip._version:
                raise TypeError("%s and %s are not of the same version" % (
                                 ip, ips[-1]))
            try:
                ips.append(ip.ip)
            except AttributeError:
                ips.append(ip.network_address)
        else:
            if nets and nets[-1]._version != ip._version:
                raise TypeError("%s and %s are not of the same version" % (
                                 ip, nets[-1]))
            nets.append(ip)

    # sort and dedup
    ips = sorted(set(ips))

    # find consecutive address ranges in the sorted sequence and summarize them
    if ips:
        for first, last in _find_address_range(ips):
            addrs.extend(summarize_address_range(first, last))

    return _collapse_addresses_internal(addrs + nets)


def get_mixed_type_key(obj):
    """Return a key suitable for sorting between networks and addresses.

    Address and Network objects are not sortable by default; they're
    fundamentally different so the expression

        IPv4Address('192.0.2.0') <= IPv4Network('192.0.2.0/24')

    doesn't make any sense.  There are some times however, where you may wish
    to have ipaddress sort these for you anyway. If you need to do this, you
    can use this function as the key= argument to sorted().

    Args:
      obj: either a Network or Address object.
    Returns:
      appropriate key.

    """
    if isinstance(obj, _BaseNetwork):
        return obj._get_networks_key()
    elif isinstance(obj, _BaseAddress):
        return obj._get_address_key()
    return NotImplemented


class _IPAddressBase:

    """The mother class."""

    __slots__ = ()

    @property
    def exploded(self):
        """Return the longhand version of the IP address as a string."""
        return self._explode_shorthand_ip_string()

    @property
    def compressed(self):
        """Return the shorthand version of the IP address as a string."""
        return str(self)

    @property
    def reverse_pointer(self):
        """The name of the reverse DNS pointer for the IP address, e.g.:
            >>> ipaddress.ip_address("127.0.0.1").reverse_pointer
            '1.0.0.127.in-addr.arpa'
            >>> ipaddress.ip_address("2001:db8::1").reverse_pointer
            '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa'

        """
        return self._reverse_pointer()

    @property
    def version(self):
        msg = '%200s has no version specified' % (type(self),)
        raise NotImplementedError(msg)

    def _check_int_address(self, address):
        if address < 0:
            msg = "%d (< 0) is not permitted as an IPv%d address"
            raise AddressValueError(msg % (address, self._version))
        if address > self._ALL_ONES:
            msg = "%d (>= 2**%d) is not permitted as an IPv%d address"
            raise AddressValueError(msg % (address, self._max_prefixlen,
                                           self._version))

    def _check_packed_address(self, address, expected_len):
        address_len = len(address)
        if address_len != expected_len:
            msg = "%r (len %d != %d) is not permitted as an IPv%d address"
            raise AddressValueError(msg % (address, address_len,
                                           expected_len, self._version))

    @classmethod
    def _ip_int_from_prefix(cls, prefixlen):
        """Turn the prefix length into a bitwise netmask

        Args:
            prefixlen: An integer, the prefix length.

        Returns:
            An integer.

        """
        return cls._ALL_ONES ^ (cls._ALL_ONES >> prefixlen)

    @classmethod
    def _prefix_from_ip_int(cls, ip_int):
        """Return prefix length from the bitwise netmask.

        Args:
            ip_int: An integer, the netmask in expanded bitwise format

        Returns:
            An integer, the prefix length.

        Raises:
            ValueError: If the input intermingles zeroes & ones
        """
        trailing_zeroes = _count_righthand_zero_bits(ip_int,
                                                     cls._max_prefixlen)
        prefixlen = cls._max_prefixlen - trailing_zeroes
        leading_ones = ip_int >> trailing_zeroes
        all_ones = (1 << prefixlen) - 1
        if leading_ones != all_ones:
            byteslen = cls._max_prefixlen // 8
            details = ip_int.to_bytes(byteslen, 'big')
            msg = 'Netmask pattern %r mixes zeroes & ones'
            raise ValueError(msg % details)
        return prefixlen

    @classmethod
    def _report_invalid_netmask(cls, netmask_str):
        msg = '%r is not a valid netmask' % netmask_str
        raise NetmaskValueError(msg) from None

    @classmethod
    def _prefix_from_prefix_string(cls, prefixlen_str):
        """Return prefix length from a numeric string

        Args:
            prefixlen_str: The string to be converted

        Returns:
            An integer, the prefix length.

        Raises:
            NetmaskValueError: If the input is not a valid netmask
        """
        # int allows a leading +/- as well as surrounding whitespace,
        # so we ensure that isn't the case
        if not (prefixlen_str.isascii() and prefixlen_str.isdigit()):
            cls._report_invalid_netmask(prefixlen_str)
        try:
            prefixlen = int(prefixlen_str)
        except ValueError:
            cls._report_invalid_netmask(prefixlen_str)
        if not (0 <= prefixlen <= cls._max_prefixlen):
            cls._report_invalid_netmask(prefixlen_str)
        return prefixlen

    @classmethod
    def _prefix_from_ip_string(cls, ip_str):
        """Turn a netmask/hostmask string into a prefix length

        Args:
            ip_str: The netmask/hostmask to be converted

        Returns:
            An integer, the prefix length.

        Raises:
            NetmaskValueError: If the input is not a valid netmask/hostmask
        """
        # Parse the netmask/hostmask like an IP address.
        try:
            ip_int = cls._ip_int_from_string(ip_str)
        except AddressValueError:
            cls._report_invalid_netmask(ip_str)

        # Try matching a netmask (this would be /1*0*/ as a bitwise regexp).
        # Note that the two ambiguous cases (all-ones and all-zeroes) are
        # treated as netmasks.
        try:
            return cls._prefix_from_ip_int(ip_int)
        except ValueError:
            pass

        # Invert the bits, and try matching a /0+1+/ hostmask instead.
        ip_int ^= cls._ALL_ONES
        try:
            return cls._prefix_from_ip_int(ip_int)
        except ValueError:
            cls._report_invalid_netmask(ip_str)

    @classmethod
    def _split_addr_prefix(cls, address):
        """Helper function to parse address of Network/Interface.

        Arg:
            address: Argument of Network/Interface.

        Returns:
            (addr, prefix) tuple.
        """
        # a packed address or integer
        if isinstance(address, (bytes, int)):
            return address, cls._max_prefixlen

        if not isinstance(address, tuple):
            # Assume input argument to be string or any object representation
            # which converts into a formatted IP prefix string.
            address = _split_optional_netmask(address)

        # Constructing from a tuple (addr, [mask])
        if len(address) > 1:
            return address
        return address[0], cls._max_prefixlen

    def __reduce__(self):
        return self.__class__, (str(self),)


_address_fmt_re = None

@functools.total_ordering
class _BaseAddress(_IPAddressBase):

    """A generic IP object.

    This IP class contains the version independent methods which are
    used by single IP addresses.
    """

    __slots__ = ()

    def __int__(self):
        return self._ip

    def __eq__(self, other):
        try:
            return (self._ip == other._ip
                    and self._version == other._version)
        except AttributeError:
            return NotImplemented

    def __lt__(self, other):
        if not isinstance(other, _BaseAddress):
            return NotImplemented
        if self._version != other._version:
            raise TypeError('%s and %s are not of the same version' % (
                             self, other))
        if self._ip != other._ip:
            return self._ip < other._ip
        return False

    # Shorthand for Integer addition and subtraction. This is not
    # meant to ever support addition/subtraction of addresses.
    def __add__(self, other):
        if not isinstance(other, int):
            return NotImplemented
        return self.__class__(int(self) + other)

    def __sub__(self, other):
        if not isinstance(other, int):
            return NotImplemented
        return self.__class__(int(self) - other)

    def __repr__(self):
        return '%s(%r)' % (self.__class__.__name__, str(self))

    def __str__(self):
        return str(self._string_from_ip_int(self._ip))

    def __hash__(self):
        return hash(hex(int(self._ip)))

    def _get_address_key(self):
        return (self._version, self)

    def __reduce__(self):
        return self.__class__, (self._ip,)

    def __format__(self, fmt):
        """Returns an IP address as a formatted string.

        Supported presentation types are:
        's': returns the IP address as a string (default)
        'b': converts to binary and returns a zero-padded string
        'X' or 'x': converts to upper- or lower-case hex and returns a zero-padded string
        'n': the same as 'b' for IPv4 and 'x' for IPv6

        For binary and hex presentation types, the alternate form specifier
        '#' and the grouping option '_' are supported.
        """

        # Support string formatting
        if not fmt or fmt[-1] == 's':
            return format(str(self), fmt)

        # From here on down, support for 'bnXx'
        global _address_fmt_re
        if _address_fmt_re is None:
            import re
            _address_fmt_re = re.compile('(#?)(_?)([xbnX])')

        m = _address_fmt_re.fullmatch(fmt)
        if not m:
            return super().__format__(fmt)

        alternate, grouping, fmt_base = m.groups()

        # Set some defaults
        if fmt_base == 'n':
            if self._version == 4:
                fmt_base = 'b'  # Binary is default for ipv4
            else:
                fmt_base = 'x'  # Hex is default for ipv6

        if fmt_base == 'b':
            padlen = self._max_prefixlen
        else:
            padlen = self._max_prefixlen // 4

        if grouping:
            padlen += padlen // 4 - 1

        if alternate:
            padlen += 2  # 0b or 0x

        return format(int(self), f'{alternate}0{padlen}{grouping}{fmt_base}')


@functools.total_ordering
class _BaseNetwork(_IPAddressBase):
    """A generic IP network object.

    This IP class contains the version independent methods which are
    used by networks.
    """

    def __repr__(self):
        return '%s(%r)' % (self.__class__.__name__, str(self))

    def __str__(self):
        return '%s/%d' % (self.network_address, self.prefixlen)

    def hosts(self):
        """Generate Iterator over usable hosts in a network.

        This is like __iter__ except it doesn't return the network
        or broadcast addresses.

        """
        network = int(self.network_address)
        broadcast = int(self.broadcast_address)
        for x in range(network + 1, broadcast):
            yield self._address_class(x)

    def __iter__(self):
        network = int(self.network_address)
        broadcast = int(self.broadcast_address)
        for x in range(network, broadcast + 1):
            yield self._address_class(x)

    def __getitem__(self, n):
        network = int(self.network_address)
        broadcast = int(self.broadcast_address)
        if n >= 0:
            if network + n > broadcast:
                raise IndexError('address out of range')
            return self._address_class(network + n)
        else:
            n += 1
            if broadcast + n < network:
                raise IndexError('address out of range')
            return self._address_class(broadcast + n)

    def __lt__(self, other):
        if not isinstance(other, _BaseNetwork):
            return NotImplemented
        if self._version != other._version:
            raise TypeError('%s and %s are not of the same version' % (
                             self, other))
        if self.network_address != other.network_address:
            return self.network_address < other.network_address
        if self.netmask != other.netmask:
            return self.netmask < other.netmask
        return False

    def __eq__(self, other):
        try:
            return (self._version == other._version and
                    self.network_address == other.network_address and
                    int(self.netmask) == int(other.netmask))
        except AttributeError:
            return NotImplemented

    def __hash__(self):
        return hash(int(self.network_address) ^ int(self.netmask))

    def __contains__(self, other):
        # always false if one is v4 and the other is v6.
        if self._version != other._version:
            return False
        # dealing with another network.
        if isinstance(other, _BaseNetwork):
            return False
        # dealing with another address
        else:
            # address
            return other._ip & self.netmask._ip == self.network_address._ip

    def overlaps(self, other):
        """Tell if self is partly contained in other."""
        return self.network_address in other or (
            self.broadcast_address in other or (
                other.network_address in self or (
                    other.broadcast_address in self)))

    @functools.cached_property
    def broadcast_address(self):
        return self._address_class(int(self.network_address) |
                                   int(self.hostmask))

    @functools.cached_property
    def hostmask(self):
        return self._address_class(int(self.netmask) ^ self._ALL_ONES)

    @property
    def with_prefixlen(self):
        return '%s/%d' % (self.network_address, self._prefixlen)

    @property
    def with_netmask(self):
        return '%s/%s' % (self.network_address, self.netmask)

    @property
    def with_hostmask(self):
        return '%s/%s' % (self.network_address, self.hostmask)

    @property
    def num_addresses(self):
        """Number of hosts in the current subnet."""
        return int(self.broadcast_address) - int(self.network_address) + 1

    @property
    def _address_class(self):
        # Returning bare address objects (rather than interfaces) allows for
        # more consistent behaviour across the network address, broadcast
        # address and individual host addresses.
        msg = '%200s has no associated address class' % (type(self),)
        raise NotImplementedError(msg)

    @property
    def prefixlen(self):
        return self._prefixlen

    def address_exclude(self, other):
        """Remove an address from a larger block.

        For example:

            addr1 = ip_network('192.0.2.0/28')
            addr2 = ip_network('192.0.2.1/32')
            list(addr1.address_exclude(addr2)) =
                [IPv4Network('192.0.2.0/32'), IPv4Network('192.0.2.2/31'),
                 IPv4Network('192.0.2.4/30'), IPv4Network('192.0.2.8/29')]

        or IPv6:

            addr1 = ip_network('2001:db8::1/32')
            addr2 = ip_network('2001:db8::1/128')
            list(addr1.address_exclude(addr2)) =
                [ip_network('2001:db8::1/128'),
                 ip_network('2001:db8::2/127'),
                 ip_network('2001:db8::4/126'),
                 ip_network('2001:db8::8/125'),
                 ...
                 ip_network('2001:db8:8000::/33')]

        Args:
            other: An IPv4Network or IPv6Network object of the same type.

        Returns:
            An iterator of the IPv(4|6)Network objects which is self
            minus other.

        Raises:
            TypeError: If self and other are of differing address
              versions, or if other is not a network object.
            ValueError: If other is not completely contained by self.

        """
        if not self._version == other._version:
            raise TypeError("%s and %s are not of the same version" % (
                             self, other))

        if not isinstance(other, _BaseNetwork):
            raise TypeError("%s is not a network object" % other)

        if not other.subnet_of(self):
            raise ValueError('%s not contained in %s' % (other, self))
        if other == self:
            return

        # Make sure we're comparing the network of other.
        other = other.__class__('%s/%s' % (other.network_address,
                                           other.prefixlen))

        s1, s2 = self.subnets()
        while s1 != other and s2 != other:
            if other.subnet_of(s1):
                yield s2
                s1, s2 = s1.subnets()
            elif other.subnet_of(s2):
                yield s1
                s1, s2 = s2.subnets()
            else:
                # If we got here, there's a bug somewhere.
                raise AssertionError('Error performing exclusion: '
                                     's1: %s s2: %s other: %s' %
                                     (s1, s2, other))
        if s1 == other:
            yield s2
        elif s2 == other:
            yield s1
        else:
            # If we got here, there's a bug somewhere.
            raise AssertionError('Error performing exclusion: '
                                 's1: %s s2: %s other: %s' %
                                 (s1, s2, other))

    def compare_networks(self, other):
        """Compare two IP objects.

        This is only concerned about the comparison of the integer
        representation of the network addresses.  This means that the
        host bits aren't considered at all in this method.  If you want
        to compare host bits, you can easily enough do a
        'HostA._ip < HostB._ip'

        Args:
            other: An IP object.

        Returns:
            If the IP versions of self and other are the same, returns:

            -1 if self < other:
              eg: IPv4Network('192.0.2.0/25') < IPv4Network('192.0.2.128/25')
              IPv6Network('2001:db8::1000/124') <
                  IPv6Network('2001:db8::2000/124')
            0 if self == other
              eg: IPv4Network('192.0.2.0/24') == IPv4Network('192.0.2.0/24')
              IPv6Network('2001:db8::1000/124') ==
                  IPv6Network('2001:db8::1000/124')
            1 if self > other
              eg: IPv4Network('192.0.2.128/25') > IPv4Network('192.0.2.0/25')
                  IPv6Network('2001:db8::2000/124') >
                      IPv6Network('2001:db8::1000/124')

          Raises:
              TypeError if the IP versions are different.

        """
        # does this need to raise a ValueError?
        if self._version != other._version:
            raise TypeError('%s and %s are not of the same type' % (
                             self, other))
        # self._version == other._version below here:
        if self.network_address < other.network_address:
            return -1
        if self.network_address > other.network_address:
            return 1
        # self.network_address == other.network_address below here:
        if self.netmask < other.netmask:
            return -1
        if self.netmask > other.netmask:
            return 1
        return 0

    def _get_networks_key(self):
        """Network-only key function.

        Returns an object that identifies this address' network and
        netmask. This function is a suitable "key" argument for sorted()
        and list.sort().

        """
        return (self._version, self.network_address, self.netmask)

    def subnets(self, prefixlen_diff=1, new_prefix=None):
        """The subnets which join to make the current subnet.

        In the case that self contains only one IP
        (self._prefixlen == 32 for IPv4 or self._prefixlen == 128
        for IPv6), yield an iterator with just ourself.

        Args:
            prefixlen_diff: An integer, the amount the prefix length
              should be increased by. This should not be set if
              new_prefix is also set.
            new_prefix: The desired new prefix length. This must be a
              larger number (smaller prefix) than the existing prefix.
              This should not be set if prefixlen_diff is also set.

        Returns:
            An iterator of IPv(4|6) objects.

        Raises:
            ValueError: The prefixlen_diff is too small or too large.
                OR
            prefixlen_diff and new_prefix are both set or new_prefix
              is a smaller number than the current prefix (smaller
              number means a larger network)

        """
        if self._prefixlen == self._max_prefixlen:
            yield self
            return

        if new_prefix is not None:
            if new_prefix < self._prefixlen:
                raise ValueError('new prefix must be longer')
            if prefixlen_diff != 1:
                raise ValueError('cannot set prefixlen_diff and new_prefix')
            prefixlen_diff = new_prefix - self._prefixlen

        if prefixlen_diff < 0:
            raise ValueError('prefix length diff must be > 0')
        new_prefixlen = self._prefixlen + prefixlen_diff

        if new_prefixlen > self._max_prefixlen:
            raise ValueError(
                'prefix length diff %d is invalid for netblock %s' % (
                    new_prefixlen, self))

        start = int(self.network_address)
        end = int(self.broadcast_address) + 1
        step = (int(self.hostmask) + 1) >> prefixlen_diff
        for new_addr in range(start, end, step):
            current = self.__class__((new_addr, new_prefixlen))
            yield current

    def supernet(self, prefixlen_diff=1, new_prefix=None):
        """The supernet containing the current network.

        Args:
            prefixlen_diff: An integer, the amount the prefix length of
              the network should be decreased by.  For example, given a
              /24 network and a prefixlen_diff of 3, a supernet with a
              /21 netmask is returned.

        Returns:
            An IPv4 network object.

        Raises:
            ValueError: If self.prefixlen - prefixlen_diff < 0. I.e., you have
              a negative prefix length.
                OR
            If prefixlen_diff and new_prefix are both set or new_prefix is a
              larger number than the current prefix (larger number means a
              smaller network)

        """
        if self._prefixlen == 0:
            return self

        if new_prefix is not None:
            if new_prefix > self._prefixlen:
                raise ValueError('new prefix must be shorter')
            if prefixlen_diff != 1:
                raise ValueError('cannot set prefixlen_diff and new_prefix')
            prefixlen_diff = self._prefixlen - new_prefix

        new_prefixlen = self.prefixlen - prefixlen_diff
        if new_prefixlen < 0:
            raise ValueError(
                'current prefixlen is %d, cannot have a prefixlen_diff of %d' %
                (self.prefixlen, prefixlen_diff))
        return self.__class__((
            int(self.network_address) & (int(self.netmask) << prefixlen_diff),
            new_prefixlen
            ))

    @property
    def is_multicast(self):
        """Test if the address is reserved for multicast use.

        Returns:
            A boolean, True if the address is a multicast address.
            See RFC 2373 2.7 for details.

        """
        return (self.network_address.is_multicast and
                self.broadcast_address.is_multicast)

    @staticmethod
    def _is_subnet_of(a, b):
        try:
            # Always false if one is v4 and the other is v6.
            if a._version != b._version:
                raise TypeError(f"{a} and {b} are not of the same version")
            return (b.network_address <= a.network_address and
                    b.broadcast_address >= a.broadcast_address)
        except AttributeError:
            raise TypeError(f"Unable to test subnet containment "
                            f"between {a} and {b}")

    def subnet_of(self, other):
        """Return True if this network is a subnet of other."""
        return self._is_subnet_of(self, other)

    def supernet_of(self, other):
        """Return True if this network is a supernet of other."""
        return self._is_subnet_of(other, self)

    @property
    def is_reserved(self):
        """Test if the address is otherwise IETF reserved.

        Returns:
            A boolean, True if the address is within one of the
            reserved IPv6 Network ranges.

        """
        return (self.network_address.is_reserved and
                self.broadcast_address.is_reserved)

    @property
    def is_link_local(self):
        """Test if the address is reserved for link-local.

        Returns:
            A boolean, True if the address is reserved per RFC 4291.

        """
        return (self.network_address.is_link_local and
                self.broadcast_address.is_link_local)

    @property
    def is_private(self):
        """Test if this network belongs to a private range.

        Returns:
            A boolean, True if the network is reserved per
            iana-ipv4-special-registry or iana-ipv6-special-registry.

        """
        return any(self.network_address in priv_network and
                   self.broadcast_address in priv_network
                   for priv_network in self._constants._private_networks) and all(
                    self.network_address not in network and
                    self.broadcast_address not in network
                    for network in self._constants._private_networks_exceptions
                )

    @property
    def is_global(self):
        """Test if this address is allocated for public networks.

        Returns:
            A boolean, True if the address is not reserved per
            iana-ipv4-special-registry or iana-ipv6-special-registry.

        """
        return not self.is_private

    @property
    def is_unspecified(self):
        """Test if the address is unspecified.

        Returns:
            A boolean, True if this is the unspecified address as defined in
            RFC 2373 2.5.2.

        """
        return (self.network_address.is_unspecified and
                self.broadcast_address.is_unspecified)

    @property
    def is_loopback(self):
        """Test if the address is a loopback address.

        Returns:
            A boolean, True if the address is a loopback address as defined in
            RFC 2373 2.5.3.

        """
        return (self.network_address.is_loopback and
                self.broadcast_address.is_loopback)


class _BaseConstants:

    _private_networks = []


_BaseNetwork._constants = _BaseConstants


class _BaseV4:

    """Base IPv4 object.

    The following methods are used by IPv4 objects in both single IP
    addresses and networks.

    """

    __slots__ = ()
    _version = 4
    # Equivalent to 255.255.255.255 or 32 bits of 1's.
    _ALL_ONES = (2**IPV4LENGTH) - 1

    _max_prefixlen = IPV4LENGTH
    # There are only a handful of valid v4 netmasks, so we cache them all
    # when constructed (see _make_netmask()).
    _netmask_cache = {}

    def _explode_shorthand_ip_string(self):
        return str(self)

    @classmethod
    def _make_netmask(cls, arg):
        """Make a (netmask, prefix_len) tuple from the given argument.

        Argument can be:
        - an integer (the prefix length)
        - a string representing the prefix length (e.g. "24")
        - a string representing the prefix netmask (e.g. "255.255.255.0")
        """
        if arg not in cls._netmask_cache:
            if isinstance(arg, int):
                prefixlen = arg
                if not (0 <= prefixlen <= cls._max_prefixlen):
                    cls._report_invalid_netmask(prefixlen)
            else:
                try:
                    # Check for a netmask in prefix length form
                    prefixlen = cls._prefix_from_prefix_string(arg)
                except NetmaskValueError:
                    # Check for a netmask or hostmask in dotted-quad form.
                    # This may raise NetmaskValueError.
                    prefixlen = cls._prefix_from_ip_string(arg)
            netmask = IPv4Address(cls._ip_int_from_prefix(prefixlen))
            cls._netmask_cache[arg] = netmask, prefixlen
        return cls._netmask_cache[arg]

    @classmethod
    def _ip_int_from_string(cls, ip_str):
        """Turn the given IP string into an integer for comparison.

        Args:
            ip_str: A string, the IP ip_str.

        Returns:
            The IP ip_str as an integer.

        Raises:
            AddressValueError: if ip_str isn't a valid IPv4 Address.

        """
        if not ip_str:
            raise AddressValueError('Address cannot be empty')

        octets = ip_str.split('.')
        if len(octets) != 4:
            raise AddressValueError("Expected 4 octets in %r" % ip_str)

        try:
            return int.from_bytes(map(cls._parse_octet, octets), 'big')
        except ValueError as exc:
            raise AddressValueError("%s in %r" % (exc, ip_str)) from None

    @classmethod
    def _parse_octet(cls, octet_str):
        """Convert a decimal octet into an integer.

        Args:
            octet_str: A string, the number to parse.

        Returns:
            The octet as an integer.

        Raises:
            ValueError: if the octet isn't strictly a decimal from [0..255].

        """
        if not octet_str:
            raise ValueError("Empty octet not permitted")
        # Reject non-ASCII digits.
        if not (octet_str.isascii() and octet_str.isdigit()):
            msg = "Only decimal digits permitted in %r"
            raise ValueError(msg % octet_str)
        # We do the length check second, since the invalid character error
        # is likely to be more informative for the user
        if len(octet_str) > 3:
            msg = "At most 3 characters permitted in %r"
            raise ValueError(msg % octet_str)
        # Handle leading zeros as strict as glibc's inet_pton()
        # See security bug bpo-36384
        if octet_str != '0' and octet_str[0] == '0':
            msg = "Leading zeros are not permitted in %r"
            raise ValueError(msg % octet_str)
        # Convert to integer (we know digits are legal)
        octet_int = int(octet_str, 10)
        if octet_int > 255:
            raise ValueError("Octet %d (> 255) not permitted" % octet_int)
        return octet_int

    @classmethod
    def _string_from_ip_int(cls, ip_int):
        """Turns a 32-bit integer into dotted decimal notation.

        Args:
            ip_int: An integer, the IP address.

        Returns:
            The IP address as a string in dotted decimal notation.

        """
        return '.'.join(map(str, ip_int.to_bytes(4, 'big')))

    def _reverse_pointer(self):
        """Return the reverse DNS pointer name for the IPv4 address.

        This implements the method described in RFC1035 3.5.

        """
        reverse_octets = str(self).split('.')[::-1]
        return '.'.join(reverse_octets) + '.in-addr.arpa'

    @property
    def max_prefixlen(self):
        return self._max_prefixlen

    @property
    def version(self):
        return self._version


class IPv4Address(_BaseV4, _BaseAddress):

    """Represent and manipulate single IPv4 Addresses."""

    __slots__ = ('_ip', '__weakref__')

    def __init__(self, address):

        """
        Args:
            address: A string or integer representing the IP

              Additionally, an integer can be passed, so
              IPv4Address('192.0.2.1') == IPv4Address(3221225985).
              or, more generally
              IPv4Address(int(IPv4Address('192.0.2.1'))) ==
                IPv4Address('192.0.2.1')

        Raises:
            AddressValueError: If ipaddress isn't a valid IPv4 address.

        """
        # Efficient constructor from integer.
        if isinstance(address, int):
            self._check_int_address(address)
            self._ip = address
            return

        # Constructing from a packed address
        if isinstance(address, bytes):
            self._check_packed_address(address, 4)
            self._ip = int.from_bytes(address)  # big endian
            return

        # Assume input argument to be string or any object representation
        # which converts into a formatted IP string.
        addr_str = str(address)
        if '/' in addr_str:
            raise AddressValueError(f"Unexpected '/' in {address!r}")
        self._ip = self._ip_int_from_string(addr_str)

    @property
    def packed(self):
        """The binary representation of this address."""
        return v4_int_to_packed(self._ip)

    @property
    def is_reserved(self):
        """Test if the address is otherwise IETF reserved.

         Returns:
             A boolean, True if the address is within the
             reserved IPv4 Network range.

        """
        return self in self._constants._reserved_network

    @property
    @functools.lru_cache()
    def is_private(self):
        """``True`` if the address is defined as not globally reachable by
        iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_
        (for IPv6) with the following exceptions:

        * ``is_private`` is ``False`` for ``100.64.0.0/10``
        * For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the
            semantics of the underlying IPv4 addresses and the following condition holds
            (see :attr:`IPv6Address.ipv4_mapped`)::

                address.is_private == address.ipv4_mapped.is_private

        ``is_private`` has value opposite to :attr:`is_global`, except for the ``100.64.0.0/10``
        IPv4 range where they are both ``False``.
        """
        return (
            any(self in net for net in self._constants._private_networks)
            and all(self not in net for net in self._constants._private_networks_exceptions)
        )

    @property
    @functools.lru_cache()
    def is_global(self):
        """``True`` if the address is defined as globally reachable by
        iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_
        (for IPv6) with the following exception:

        For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the
        semantics of the underlying IPv4 addresses and the following condition holds
        (see :attr:`IPv6Address.ipv4_mapped`)::

            address.is_global == address.ipv4_mapped.is_global

        ``is_global`` has value opposite to :attr:`is_private`, except for the ``100.64.0.0/10``
        IPv4 range where they are both ``False``.
        """
        return self not in self._constants._public_network and not self.is_private

    @property
    def is_multicast(self):
        """Test if the address is reserved for multicast use.

        Returns:
            A boolean, True if the address is multicast.
            See RFC 3171 for details.

        """
        return self in self._constants._multicast_network

    @property
    def is_unspecified(self):
        """Test if the address is unspecified.

        Returns:
            A boolean, True if this is the unspecified address as defined in
            RFC 5735 3.

        """
        return self == self._constants._unspecified_address

    @property
    def is_loopback(self):
        """Test if the address is a loopback address.

        Returns:
            A boolean, True if the address is a loopback per RFC 3330.

        """
        return self in self._constants._loopback_network

    @property
    def is_link_local(self):
        """Test if the address is reserved for link-local.

        Returns:
            A boolean, True if the address is link-local per RFC 3927.

        """
        return self in self._constants._linklocal_network


class IPv4Interface(IPv4Address):

    def __init__(self, address):
        addr, mask = self._split_addr_prefix(address)

        IPv4Address.__init__(self, addr)
        self.network = IPv4Network((addr, mask), strict=False)
        self.netmask = self.network.netmask
        self._prefixlen = self.network._prefixlen

    @functools.cached_property
    def hostmask(self):
        return self.network.hostmask

    def __str__(self):
        return '%s/%d' % (self._string_from_ip_int(self._ip),
                          self._prefixlen)

    def __eq__(self, other):
        address_equal = IPv4Address.__eq__(self, other)
        if address_equal is NotImplemented or not address_equal:
            return address_equal
        try:
            return self.network == other.network
        except AttributeError:
            # An interface with an associated network is NOT the
            # same as an unassociated address. That's why the hash
            # takes the extra info into account.
            return False

    def __lt__(self, other):
        address_less = IPv4Address.__lt__(self, other)
        if address_less is NotImplemented:
            return NotImplemented
        try:
            return (self.network < other.network or
                    self.network == other.network and address_less)
        except AttributeError:
            # We *do* allow addresses and interfaces to be sorted. The
            # unassociated address is considered less than all interfaces.
            return False

    def __hash__(self):
        return hash((self._ip, self._prefixlen, int(self.network.network_address)))

    __reduce__ = _IPAddressBase.__reduce__

    @property
    def ip(self):
        return IPv4Address(self._ip)

    @property
    def with_prefixlen(self):
        return '%s/%s' % (self._string_from_ip_int(self._ip),
                          self._prefixlen)

    @property
    def with_netmask(self):
        return '%s/%s' % (self._string_from_ip_int(self._ip),
                          self.netmask)

    @property
    def with_hostmask(self):
        return '%s/%s' % (self._string_from_ip_int(self._ip),
                          self.hostmask)


class IPv4Network(_BaseV4, _BaseNetwork):

    """This class represents and manipulates 32-bit IPv4 network + addresses..

    Attributes: [examples for IPv4Network('192.0.2.0/27')]
        .network_address: IPv4Address('192.0.2.0')
        .hostmask: IPv4Address('0.0.0.31')
        .broadcast_address: IPv4Address('192.0.2.32')
        .netmask: IPv4Address('255.255.255.224')
        .prefixlen: 27

    """
    # Class to use when creating address objects
    _address_class = IPv4Address

    def __init__(self, address, strict=True):
        """Instantiate a new IPv4 network object.

        Args:
            address: A string or integer representing the IP [& network].
              '192.0.2.0/24'
              '192.0.2.0/255.255.255.0'
              '192.0.2.0/0.0.0.255'
              are all functionally the same in IPv4. Similarly,
              '192.0.2.1'
              '192.0.2.1/255.255.255.255'
              '192.0.2.1/32'
              are also functionally equivalent. That is to say, failing to
              provide a subnetmask will create an object with a mask of /32.

              If the mask (portion after the / in the argument) is given in
              dotted quad form, it is treated as a netmask if it starts with a
              non-zero field (e.g. /255.0.0.0 == /8) and as a hostmask if it
              starts with a zero field (e.g. 0.255.255.255 == /8), with the
              single exception of an all-zero mask which is treated as a
              netmask == /0. If no mask is given, a default of /32 is used.

              Additionally, an integer can be passed, so
              IPv4Network('192.0.2.1') == IPv4Network(3221225985)
              or, more generally
              IPv4Interface(int(IPv4Interface('192.0.2.1'))) ==
                IPv4Interface('192.0.2.1')

        Raises:
            AddressValueError: If ipaddress isn't a valid IPv4 address.
            NetmaskValueError: If the netmask isn't valid for
              an IPv4 address.
            ValueError: If strict is True and a network address is not
              supplied.
        """
        addr, mask = self._split_addr_prefix(address)

        self.network_address = IPv4Address(addr)
        self.netmask, self._prefixlen = self._make_netmask(mask)
        packed = int(self.network_address)
        if packed & int(self.netmask) != packed:
            if strict:
                raise ValueError('%s has host bits set' % self)
            else:
                self.network_address = IPv4Address(packed &
                                                   int(self.netmask))

        if self._prefixlen == (self._max_prefixlen - 1):
            self.hosts = self.__iter__
        elif self._prefixlen == (self._max_prefixlen):
            self.hosts = lambda: [IPv4Address(addr)]

    @property
    @functools.lru_cache()
    def is_global(self):
        """Test if this address is allocated for public networks.

        Returns:
            A boolean, True if the address is not reserved per
            iana-ipv4-special-registry.

        """
        return (not (self.network_address in IPv4Network('100.64.0.0/10') and
                    self.broadcast_address in IPv4Network('100.64.0.0/10')) and
                not self.is_private)


class _IPv4Constants:
    _linklocal_network = IPv4Network('169.254.0.0/16')

    _loopback_network = IPv4Network('127.0.0.0/8')

    _multicast_network = IPv4Network('224.0.0.0/4')

    _public_network = IPv4Network('100.64.0.0/10')

    # Not globally reachable address blocks listed on
    # https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
    _private_networks = [
        IPv4Network('0.0.0.0/8'),
        IPv4Network('10.0.0.0/8'),
        IPv4Network('127.0.0.0/8'),
        IPv4Network('169.254.0.0/16'),
        IPv4Network('172.16.0.0/12'),
        IPv4Network('192.0.0.0/24'),
        IPv4Network('192.0.0.170/31'),
        IPv4Network('192.0.2.0/24'),
        IPv4Network('192.168.0.0/16'),
        IPv4Network('198.18.0.0/15'),
        IPv4Network('198.51.100.0/24'),
        IPv4Network('203.0.113.0/24'),
        IPv4Network('240.0.0.0/4'),
        IPv4Network('255.255.255.255/32'),
        ]

    _private_networks_exceptions = [
        IPv4Network('192.0.0.9/32'),
        IPv4Network('192.0.0.10/32'),
    ]

    _reserved_network = IPv4Network('240.0.0.0/4')

    _unspecified_address = IPv4Address('0.0.0.0')


IPv4Address._constants = _IPv4Constants
IPv4Network._constants = _IPv4Constants


class _BaseV6:

    """Base IPv6 object.

    The following methods are used by IPv6 objects in both single IP
    addresses and networks.

    """

    __slots__ = ()
    _version = 6
    _ALL_ONES = (2**IPV6LENGTH) - 1
    _HEXTET_COUNT = 8
    _HEX_DIGITS = frozenset('0123456789ABCDEFabcdef')
    _max_prefixlen = IPV6LENGTH

    # There are only a bunch of valid v6 netmasks, so we cache them all
    # when constructed (see _make_netmask()).
    _netmask_cache = {}

    @classmethod
    def _make_netmask(cls, arg):
        """Make a (netmask, prefix_len) tuple from the given argument.

        Argument can be:
        - an integer (the prefix length)
        - a string representing the prefix length (e.g. "24")
        - a string representing the prefix netmask (e.g. "255.255.255.0")
        """
        if arg not in cls._netmask_cache:
            if isinstance(arg, int):
                prefixlen = arg
                if not (0 <= prefixlen <= cls._max_prefixlen):
                    cls._report_invalid_netmask(prefixlen)
            else:
                prefixlen = cls._prefix_from_prefix_string(arg)
            netmask = IPv6Address(cls._ip_int_from_prefix(prefixlen))
            cls._netmask_cache[arg] = netmask, prefixlen
        return cls._netmask_cache[arg]

    @classmethod
    def _ip_int_from_string(cls, ip_str):
        """Turn an IPv6 ip_str into an integer.

        Args:
            ip_str: A string, the IPv6 ip_str.

        Returns:
            An int, the IPv6 address

        Raises:
            AddressValueError: if ip_str isn't a valid IPv6 Address.

        """
        if not ip_str:
            raise AddressValueError('Address cannot be empty')

        parts = ip_str.split(':')

        # An IPv6 address needs at least 2 colons (3 parts).
        _min_parts = 3
        if len(parts) < _min_parts:
            msg = "At least %d parts expected in %r" % (_min_parts, ip_str)
            raise AddressValueError(msg)

        # If the address has an IPv4-style suffix, convert it to hexadecimal.
        if '.' in parts[-1]:
            try:
                ipv4_int = IPv4Address(parts.pop())._ip
            except AddressValueError as exc:
                raise AddressValueError("%s in %r" % (exc, ip_str)) from None
            parts.append('%x' % ((ipv4_int >> 16) & 0xFFFF))
            parts.append('%x' % (ipv4_int & 0xFFFF))

        # An IPv6 address can't have more than 8 colons (9 parts).
        # The extra colon comes from using the "::" notation for a single
        # leading or trailing zero part.
        _max_parts = cls._HEXTET_COUNT + 1
        if len(parts) > _max_parts:
            msg = "At most %d colons permitted in %r" % (_max_parts-1, ip_str)
            raise AddressValueError(msg)

        # Disregarding the endpoints, find '::' with nothing in between.
        # This indicates that a run of zeroes has been skipped.
        skip_index = None
        for i in range(1, len(parts) - 1):
            if not parts[i]:
                if skip_index is not None:
                    # Can't have more than one '::'
                    msg = "At most one '::' permitted in %r" % ip_str
                    raise AddressValueError(msg)
                skip_index = i

        # parts_hi is the number of parts to copy from above/before the '::'
        # parts_lo is the number of parts to copy from below/after the '::'
        if skip_index is not None:
            # If we found a '::', then check if it also covers the endpoints.
            parts_hi = skip_index
            parts_lo = len(parts) - skip_index - 1
            if not parts[0]:
                parts_hi -= 1
                if parts_hi:
                    msg = "Leading ':' only permitted as part of '::' in %r"
                    raise AddressValueError(msg % ip_str)  # ^: requires ^::
            if not parts[-1]:
                parts_lo -= 1
                if parts_lo:
                    msg = "Trailing ':' only permitted as part of '::' in %r"
                    raise AddressValueError(msg % ip_str)  # :$ requires ::$
            parts_skipped = cls._HEXTET_COUNT - (parts_hi + parts_lo)
            if parts_skipped < 1:
                msg = "Expected at most %d other parts with '::' in %r"
                raise AddressValueError(msg % (cls._HEXTET_COUNT-1, ip_str))
        else:
            # Otherwise, allocate the entire address to parts_hi.  The
            # endpoints could still be empty, but _parse_hextet() will check
            # for that.
            if len(parts) != cls._HEXTET_COUNT:
                msg = "Exactly %d parts expected without '::' in %r"
                raise AddressValueError(msg % (cls._HEXTET_COUNT, ip_str))
            if not parts[0]:
                msg = "Leading ':' only permitted as part of '::' in %r"
                raise AddressValueError(msg % ip_str)  # ^: requires ^::
            if not parts[-1]:
                msg = "Trailing ':' only permitted as part of '::' in %r"
                raise AddressValueError(msg % ip_str)  # :$ requires ::$
            parts_hi = len(parts)
            parts_lo = 0
            parts_skipped = 0

        try:
            # Now, parse the hextets into a 128-bit integer.
            ip_int = 0
            for i in range(parts_hi):
                ip_int <<= 16
                ip_int |= cls._parse_hextet(parts[i])
            ip_int <<= 16 * parts_skipped
            for i in range(-parts_lo, 0):
                ip_int <<= 16
                ip_int |= cls._parse_hextet(parts[i])
            return ip_int
        except ValueError as exc:
            raise AddressValueError("%s in %r" % (exc, ip_str)) from None

    @classmethod
    def _parse_hextet(cls, hextet_str):
        """Convert an IPv6 hextet string into an integer.

        Args:
            hextet_str: A string, the number to parse.

        Returns:
            The hextet as an integer.

        Raises:
            ValueError: if the input isn't strictly a hex number from
              [0..FFFF].

        """
        # Reject non-ASCII digits.
        if not cls._HEX_DIGITS.issuperset(hextet_str):
            raise ValueError("Only hex digits permitted in %r" % hextet_str)
        # We do the length check second, since the invalid character error
        # is likely to be more informative for the user
        if len(hextet_str) > 4:
            msg = "At most 4 characters permitted in %r"
            raise ValueError(msg % hextet_str)
        # Length check means we can skip checking the integer value
        return int(hextet_str, 16)

    @classmethod
    def _compress_hextets(cls, hextets):
        """Compresses a list of hextets.

        Compresses a list of strings, replacing the longest continuous
        sequence of "0" in the list with "" and adding empty strings at
        the beginning or at the end of the string such that subsequently
        calling ":".join(hextets) will produce the compressed version of
        the IPv6 address.

        Args:
            hextets: A list of strings, the hextets to compress.

        Returns:
            A list of strings.

        """
        best_doublecolon_start = -1
        best_doublecolon_len = 0
        doublecolon_start = -1
        doublecolon_len = 0
        for index, hextet in enumerate(hextets):
            if hextet == '0':
                doublecolon_len += 1
                if doublecolon_start == -1:
                    # Start of a sequence of zeros.
                    doublecolon_start = index
                if doublecolon_len > best_doublecolon_len:
                    # This is the longest sequence of zeros so far.
                    best_doublecolon_len = doublecolon_len
                    best_doublecolon_start = doublecolon_start
            else:
                doublecolon_len = 0
                doublecolon_start = -1

        if best_doublecolon_len > 1:
            best_doublecolon_end = (best_doublecolon_start +
                                    best_doublecolon_len)
            # For zeros at the end of the address.
            if best_doublecolon_end == len(hextets):
                hextets += ['']
            hextets[best_doublecolon_start:best_doublecolon_end] = ['']
            # For zeros at the beginning of the address.
            if best_doublecolon_start == 0:
                hextets = [''] + hextets

        return hextets

    @classmethod
    def _string_from_ip_int(cls, ip_int=None):
        """Turns a 128-bit integer into hexadecimal notation.

        Args:
            ip_int: An integer, the IP address.

        Returns:
            A string, the hexadecimal representation of the address.

        Raises:
            ValueError: The address is bigger than 128 bits of all ones.

        """
        if ip_int is None:
            ip_int = int(cls._ip)

        if ip_int > cls._ALL_ONES:
            raise ValueError('IPv6 address is too large')

        hex_str = '%032x' % ip_int
        hextets = ['%x' % int(hex_str[x:x+4], 16) for x in range(0, 32, 4)]

        hextets = cls._compress_hextets(hextets)
        return ':'.join(hextets)

    def _explode_shorthand_ip_string(self):
        """Expand a shortened IPv6 address.

        Args:
            ip_str: A string, the IPv6 address.

        Returns:
            A string, the expanded IPv6 address.

        """
        if isinstance(self, IPv6Network):
            ip_str = str(self.network_address)
        elif isinstance(self, IPv6Interface):
            ip_str = str(self.ip)
        else:
            ip_str = str(self)

        ip_int = self._ip_int_from_string(ip_str)
        hex_str = '%032x' % ip_int
        parts = [hex_str[x:x+4] for x in range(0, 32, 4)]
        if isinstance(self, (_BaseNetwork, IPv6Interface)):
            return '%s/%d' % (':'.join(parts), self._prefixlen)
        return ':'.join(parts)

    def _reverse_pointer(self):
        """Return the reverse DNS pointer name for the IPv6 address.

        This implements the method described in RFC3596 2.5.

        """
        reverse_chars = self.exploded[::-1].replace(':', '')
        return '.'.join(reverse_chars) + '.ip6.arpa'

    @staticmethod
    def _split_scope_id(ip_str):
        """Helper function to parse IPv6 string address with scope id.

        See RFC 4007 for details.

        Args:
            ip_str: A string, the IPv6 address.

        Returns:
            (addr, scope_id) tuple.

        """
        addr, sep, scope_id = ip_str.partition('%')
        if not sep:
            scope_id = None
        elif not scope_id or '%' in scope_id:
            raise AddressValueError('Invalid IPv6 address: "%r"' % ip_str)
        return addr, scope_id

    @property
    def max_prefixlen(self):
        return self._max_prefixlen

    @property
    def version(self):
        return self._version


class IPv6Address(_BaseV6, _BaseAddress):

    """Represent and manipulate single IPv6 Addresses."""

    __slots__ = ('_ip', '_scope_id', '__weakref__')

    def __init__(self, address):
        """Instantiate a new IPv6 address object.

        Args:
            address: A string or integer representing the IP

              Additionally, an integer can be passed, so
              IPv6Address('2001:db8::') ==
                IPv6Address(42540766411282592856903984951653826560)
              or, more generally
              IPv6Address(int(IPv6Address('2001:db8::'))) ==
                IPv6Address('2001:db8::')

        Raises:
            AddressValueError: If address isn't a valid IPv6 address.

        """
        # Efficient constructor from integer.
        if isinstance(address, int):
            self._check_int_address(address)
            self._ip = address
            self._scope_id = None
            return

        # Constructing from a packed address
        if isinstance(address, bytes):
            self._check_packed_address(address, 16)
            self._ip = int.from_bytes(address, 'big')
            self._scope_id = None
            return

        # Assume input argument to be string or any object representation
        # which converts into a formatted IP string.
        addr_str = str(address)
        if '/' in addr_str:
            raise AddressValueError(f"Unexpected '/' in {address!r}")
        addr_str, self._scope_id = self._split_scope_id(addr_str)

        self._ip = self._ip_int_from_string(addr_str)

    def __str__(self):
        ip_str = super().__str__()
        return ip_str + '%' + self._scope_id if self._scope_id else ip_str

    def __hash__(self):
        return hash((self._ip, self._scope_id))

    def __eq__(self, other):
        address_equal = super().__eq__(other)
        if address_equal is NotImplemented:
            return NotImplemented
        if not address_equal:
            return False
        return self._scope_id == getattr(other, '_scope_id', None)

    @property
    def scope_id(self):
        """Identifier of a particular zone of the address's scope.

        See RFC 4007 for details.

        Returns:
            A string identifying the zone of the address if specified, else None.

        """
        return self._scope_id

    @property
    def packed(self):
        """The binary representation of this address."""
        return v6_int_to_packed(self._ip)

    @property
    def is_multicast(self):
        """Test if the address is reserved for multicast use.

        Returns:
            A boolean, True if the address is a multicast address.
            See RFC 2373 2.7 for details.

        """
        return self in self._constants._multicast_network

    @property
    def is_reserved(self):
        """Test if the address is otherwise IETF reserved.

        Returns:
            A boolean, True if the address is within one of the
            reserved IPv6 Network ranges.

        """
        return any(self in x for x in self._constants._reserved_networks)

    @property
    def is_link_local(self):
        """Test if the address is reserved for link-local.

        Returns:
            A boolean, True if the address is reserved per RFC 4291.

        """
        return self in self._constants._linklocal_network

    @property
    def is_site_local(self):
        """Test if the address is reserved for site-local.

        Note that the site-local address space has been deprecated by RFC 3879.
        Use is_private to test if this address is in the space of unique local
        addresses as defined by RFC 4193.

        Returns:
            A boolean, True if the address is reserved per RFC 3513 2.5.6.

        """
        return self in self._constants._sitelocal_network

    @property
    @functools.lru_cache()
    def is_private(self):
        """``True`` if the address is defined as not globally reachable by
        iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_
        (for IPv6) with the following exceptions:

        * ``is_private`` is ``False`` for ``100.64.0.0/10``
        * For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the
            semantics of the underlying IPv4 addresses and the following condition holds
            (see :attr:`IPv6Address.ipv4_mapped`)::

                address.is_private == address.ipv4_mapped.is_private

        ``is_private`` has value opposite to :attr:`is_global`, except for the ``100.64.0.0/10``
        IPv4 range where they are both ``False``.
        """
        ipv4_mapped = self.ipv4_mapped
        if ipv4_mapped is not None:
            return ipv4_mapped.is_private
        return (
            any(self in net for net in self._constants._private_networks)
            and all(self not in net for net in self._constants._private_networks_exceptions)
        )

    @property
    def is_global(self):
        """``True`` if the address is defined as globally reachable by
        iana-ipv4-special-registry_ (for IPv4) or iana-ipv6-special-registry_
        (for IPv6) with the following exception:

        For IPv4-mapped IPv6-addresses the ``is_private`` value is determined by the
        semantics of the underlying IPv4 addresses and the following condition holds
        (see :attr:`IPv6Address.ipv4_mapped`)::

            address.is_global == address.ipv4_mapped.is_global

        ``is_global`` has value opposite to :attr:`is_private`, except for the ``100.64.0.0/10``
        IPv4 range where they are both ``False``.
        """
        return not self.is_private

    @property
    def is_unspecified(self):
        """Test if the address is unspecified.

        Returns:
            A boolean, True if this is the unspecified address as defined in
            RFC 2373 2.5.2.

        """
        return self._ip == 0

    @property
    def is_loopback(self):
        """Test if the address is a loopback address.

        Returns:
            A boolean, True if the address is a loopback address as defined in
            RFC 2373 2.5.3.

        """
        return self._ip == 1

    @property
    def ipv4_mapped(self):
        """Return the IPv4 mapped address.

        Returns:
            If the IPv6 address is a v4 mapped address, return the
            IPv4 mapped address. Return None otherwise.

        """
        if (self._ip >> 32) != 0xFFFF:
            return None
        return IPv4Address(self._ip & 0xFFFFFFFF)

    @property
    def teredo(self):
        """Tuple of embedded teredo IPs.

        Returns:
            Tuple of the (server, client) IPs or None if the address
            doesn't appear to be a teredo address (doesn't start with
            2001::/32)

        """
        if (self._ip >> 96) != 0x20010000:
            return None
        return (IPv4Address((self._ip >> 64) & 0xFFFFFFFF),
                IPv4Address(~self._ip & 0xFFFFFFFF))

    @property
    def sixtofour(self):
        """Return the IPv4 6to4 embedded address.

        Returns:
            The IPv4 6to4-embedded address if present or None if the
            address doesn't appear to contain a 6to4 embedded address.

        """
        if (self._ip >> 112) != 0x2002:
            return None
        return IPv4Address((self._ip >> 80) & 0xFFFFFFFF)


class IPv6Interface(IPv6Address):

    def __init__(self, address):
        addr, mask = self._split_addr_prefix(address)

        IPv6Address.__init__(self, addr)
        self.network = IPv6Network((addr, mask), strict=False)
        self.netmask = self.network.netmask
        self._prefixlen = self.network._prefixlen

    @functools.cached_property
    def hostmask(self):
        return self.network.hostmask

    def __str__(self):
        return '%s/%d' % (super().__str__(),
                          self._prefixlen)

    def __eq__(self, other):
        address_equal = IPv6Address.__eq__(self, other)
        if address_equal is NotImplemented or not address_equal:
            return address_equal
        try:
            return self.network == other.network
        except AttributeError:
            # An interface with an associated network is NOT the
            # same as an unassociated address. That's why the hash
            # takes the extra info into account.
            return False

    def __lt__(self, other):
        address_less = IPv6Address.__lt__(self, other)
        if address_less is NotImplemented:
            return address_less
        try:
            return (self.network < other.network or
                    self.network == other.network and address_less)
        except AttributeError:
            # We *do* allow addresses and interfaces to be sorted. The
            # unassociated address is considered less than all interfaces.
            return False

    def __hash__(self):
        return hash((self._ip, self._prefixlen, int(self.network.network_address)))

    __reduce__ = _IPAddressBase.__reduce__

    @property
    def ip(self):
        return IPv6Address(self._ip)

    @property
    def with_prefixlen(self):
        return '%s/%s' % (self._string_from_ip_int(self._ip),
                          self._prefixlen)

    @property
    def with_netmask(self):
        return '%s/%s' % (self._string_from_ip_int(self._ip),
                          self.netmask)

    @property
    def with_hostmask(self):
        return '%s/%s' % (self._string_from_ip_int(self._ip),
                          self.hostmask)

    @property
    def is_unspecified(self):
        return self._ip == 0 and self.network.is_unspecified

    @property
    def is_loopback(self):
        return self._ip == 1 and self.network.is_loopback


class IPv6Network(_BaseV6, _BaseNetwork):

    """This class represents and manipulates 128-bit IPv6 networks.

    Attributes: [examples for IPv6('2001:db8::1000/124')]
        .network_address: IPv6Address('2001:db8::1000')
        .hostmask: IPv6Address('::f')
        .broadcast_address: IPv6Address('2001:db8::100f')
        .netmask: IPv6Address('ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0')
        .prefixlen: 124

    """

    # Class to use when creating address objects
    _address_class = IPv6Address

    def __init__(self, address, strict=True):
        """Instantiate a new IPv6 Network object.

        Args:
            address: A string or integer representing the IPv6 network or the
              IP and prefix/netmask.
              '2001:db8::/128'
              '2001:db8:0000:0000:0000:0000:0000:0000/128'
              '2001:db8::'
              are all functionally the same in IPv6.  That is to say,
              failing to provide a subnetmask will create an object with
              a mask of /128.

              Additionally, an integer can be passed, so
              IPv6Network('2001:db8::') ==
                IPv6Network(42540766411282592856903984951653826560)
              or, more generally
              IPv6Network(int(IPv6Network('2001:db8::'))) ==
                IPv6Network('2001:db8::')

            strict: A boolean. If true, ensure that we have been passed
              A true network address, eg, 2001:db8::1000/124 and not an
              IP address on a network, eg, 2001:db8::1/124.

        Raises:
            AddressValueError: If address isn't a valid IPv6 address.
            NetmaskValueError: If the netmask isn't valid for
              an IPv6 address.
            ValueError: If strict was True and a network address was not
              supplied.
        """
        addr, mask = self._split_addr_prefix(address)

        self.network_address = IPv6Address(addr)
        self.netmask, self._prefixlen = self._make_netmask(mask)
        packed = int(self.network_address)
        if packed & int(self.netmask) != packed:
            if strict:
                raise ValueError('%s has host bits set' % self)
            else:
                self.network_address = IPv6Address(packed &
                                                   int(self.netmask))

        if self._prefixlen == (self._max_prefixlen - 1):
            self.hosts = self.__iter__
        elif self._prefixlen == self._max_prefixlen:
            self.hosts = lambda: [IPv6Address(addr)]

    def hosts(self):
        """Generate Iterator over usable hosts in a network.

          This is like __iter__ except it doesn't return the
          Subnet-Router anycast address.

        """
        network = int(self.network_address)
        broadcast = int(self.broadcast_address)
        for x in range(network + 1, broadcast + 1):
            yield self._address_class(x)

    @property
    def is_site_local(self):
        """Test if the address is reserved for site-local.

        Note that the site-local address space has been deprecated by RFC 3879.
        Use is_private to test if this address is in the space of unique local
        addresses as defined by RFC 4193.

        Returns:
            A boolean, True if the address is reserved per RFC 3513 2.5.6.

        """
        return (self.network_address.is_site_local and
                self.broadcast_address.is_site_local)


class _IPv6Constants:

    _linklocal_network = IPv6Network('fe80::/10')

    _multicast_network = IPv6Network('ff00::/8')

    # Not globally reachable address blocks listed on
    # https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml
    _private_networks = [
        IPv6Network('::1/128'),
        IPv6Network('::/128'),
        IPv6Network('::ffff:0:0/96'),
        IPv6Network('64:ff9b:1::/48'),
        IPv6Network('100::/64'),
        IPv6Network('2001::/23'),
        IPv6Network('2001:db8::/32'),
        # IANA says N/A, let's consider it not globally reachable to be safe
        IPv6Network('2002::/16'),
        IPv6Network('fc00::/7'),
        IPv6Network('fe80::/10'),
        ]

    _private_networks_exceptions = [
        IPv6Network('2001:1::1/128'),
        IPv6Network('2001:1::2/128'),
        IPv6Network('2001:3::/32'),
        IPv6Network('2001:4:112::/48'),
        IPv6Network('2001:20::/28'),
        IPv6Network('2001:30::/28'),
    ]

    _reserved_networks = [
        IPv6Network('::/8'), IPv6Network('100::/8'),
        IPv6Network('200::/7'), IPv6Network('400::/6'),
        IPv6Network('800::/5'), IPv6Network('1000::/4'),
        IPv6Network('4000::/3'), IPv6Network('6000::/3'),
        IPv6Network('8000::/3'), IPv6Network('A000::/3'),
        IPv6Network('C000::/3'), IPv6Network('E000::/4'),
        IPv6Network('F000::/5'), IPv6Network('F800::/6'),
        IPv6Network('FE00::/9'),
    ]

    _sitelocal_network = IPv6Network('fec0::/10')


IPv6Address._constants = _IPv6Constants
IPv6Network._constants = _IPv6Constants
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Caml1999T030  
  l  `  ^  4 4Stdlib__StringLabelsР&Stdlib&String/stringLabels.mlRltRlz@@
  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@>@@@!t Q  8 @@@A&stringO@@ @@@@@*string.mli R R@@@@.Stdlib__String@A@$make R@#intA@@ @@$charB@@ @!@@ @@ @@ @@ U  U@@A@$init S@@@ @@@%@@ @!@@ @@ @@@@ @@ @@ @@> [||? [|@@=B@%empty TM@@ @@K bL b@@JC@(of_bytes U@%bytesC@@ @b@@ @@ @@` ha h@@_D@(to_bytes V@q@@ @@@ @@ @@s oNNt oNl@@rE@&length W@@@ @u@@ @@ @~.%string_lengthAA @@@ v v@@F@#get X@@@ @}@@@ @|@@ @{@ @z@ @y0%string_safe_getBA@@@@ yRR yR@@G@&concat Y@@@ @x@$listI@@ @w@@ @v@@ @u@ @t@ @s@  @@H@#cat Z@@@ @r@@@ @q@@ @p@ @o@ @n@  @@I@%equal [@@@ @m@@@ @l$boolE@@ @k@ @j@ @i@  @@J@'compare \@@@ @h@@@ @g@@ @f@ @e@ @d@ ?? ?Z@@K@+starts_with ]&prefix&@@ @c@,@@ @b4@@ @a@ @`@ @_@. / U@@-L@)ends_with ^&suffixA@@ @^@G@@ @]O@@ @\@ @[@ @Z@I J #@@HM@-contains_from _@Z@@ @Y@M@@ @X@K@@ @Wn@@ @V@ @U@ @T@ @S@h i @@gN@.rcontains_from `@y@@ @R@l@@ @Q@j@@ @P@@ @O@ @N@ @M@ @L@ ii i@@O@(contains a@@@ @K@@@ @J@@ @I@ @H@ @G@ cc c@@P@#sub b@@@ @F@@@ @E@@@ @D@@ @C@ @B@ @A@ @@@  @@Q@-split_on_char c@@@ @?@@@ @>@@ @=@@ @<@ @;@ @:@  8@@R@#map d@@@@ @9@@ @8@ @7@@@ @6@@ @5@ @4@ @3@ ZZ Z@@S@$mapi e@@@@ @2@@@ @1@@ @0@ @/@ @.@@@ @-#@@ @,@ @+@ @*@! " @@@ T@)fold_left f@@!a @%@@@ @)
@ @(@ @'@@B@@ @&@ @$@ @#@ @"@@ A @@?U@*fold_right g@@8@@ @!@!a @@ @ @ @@_@@ @@@ @@ @@ @@_  z z`  z @@^V@'for_all h@@W@@ @z@@ @@ @@|@@ @@@ @@ @@ @@~ !G!G !G!u@@}W@&exists i@@v@@ @@@ @@ @@@@ @@@ @@ @
@ @@ !! !"@@X@$trim j@@@ @@@ @
@ @	@ "w"w "w"@@Y@'escaped k@@@ @@@ @@ @@ #?#? #?#]@@Z@/uppercase_ascii l@@@ @@@ @@ @@	%p%p	%p%@@[@/lowercase_ascii m@@@ @@@ @@ @ @&@&@&@&f@@\@0capitalize_ascii n@@@ @@@ @@ @@''''7@@]@2uncapitalize_ascii o@
@@ @@@ @@ @@'''(@@^@$iter p@@@@ @$unitF@@ @@ @@.@@ @@@ @@ @@ @@0#((1#((@@/_@%iteri q@@0@@ @@.@@ @'@@ @@ @@ @@S@@ @1@@ @@ @@ @@U'))V'))@@T`@*index_from r@f@@ @@Y@@ @@W@@ @c@@ @@ @@ @@ @@t/*Y*Yu/*Y*@@sa@.index_from_opt s@@@ @@x@@ @@v@@ @&optionJ@@ @@@ @@ @@ @@ @@7+x+x7+x+@@b@+rindex_from t@@@ @@@@ @@@@ @@@ @@ @@ @@ @@>,x,x>,x,@@c@/rindex_from_opt u@@@ @@@@ @@@@ @E@@ @@@ @@ @@ @@ @@E--E--@@d@%index v@@@ @@@@ @@@ @@ @@ @@L..L..@@e@)index_opt w@@@ @@@@ @|@@ @@@ @@ @@ @@O..O./(@@f@&rindex x@%@@ @@@@ @@@ @@ @@ @@-T/w/w.T/w/@@,g@*rindex_opt y@>@@ @@)@@ @9@@ @@@ @@ @@ @@KW//LW/0@@Jh@&to_seq z@i@@ @&Stdlib#Seq!tN@@ @@@ @@ @@h^00i^00@@gi@'to_seqi {@@@ @#Seq!ts@@ @p@@ @@ @@@ @@ @@e11e11@@j@&of_seq |@<#Seq!t@@ @@@ @@@ @@ @@j22j22$@@k@&create }@@@ @]@@ @@ @2caml_create_stringAA1@@@q22r23@0ocaml.deprecatedr22r22@	,Use Bytes.create/BytesLabels.create instead.r22r23@@r22r23@@@@@r22@@l@#set ~@@@ @@@@ @@@@ @@@ @@ @@ @@ @0%string_safe_setCAk@@@@@z4D4D{44@0ocaml.deprecated{44{44@	&Use Bytes.set/BytesLabels.set instead.	{44
{44@@{44
{44@@@@@{44@@
m@$blit @@@ @@@@ @@@@ @@@@ @@$@@ @@@ @@ @@ @@ @@ @@ @@955:665@@8n@$copy @J@@ @N@@ @@ @@L77M77@0ocaml.deprecatedS77T77@	&Strings now immutable: no need to copy^77_77@@a77b77@@@@@d77@@bo@$fill @@@ @@g@@ @@m@@ @@k@@ @d@@ @@ @@ @@ @@ @@8889 @0ocaml.deprecated8888@	(Use Bytes.fill/BytesLabels.fill instead.8888@@8888@@@@@88@@p@)uppercase @@@ @@@ @@ @@:*:*:a:@0ocaml.deprecated:K:P:K:`@	@Use String.uppercase_ascii/StringLabels.uppercase_ascii instead.:a:f:a:@@:a:e:a:@@@@@:K:M@@q@)lowercase @@@ @@@ @@ @@;;;<@0ocaml.deprecated;;;;@	@Use String.lowercase_ascii/StringLabels.lowercase_ascii instead.;;;<@@;;;<@@@@@;;@@r@*capitalize @@@ @@@ @@ @~@===N=@0ocaml.deprecated
=8===8=M@	BUse String.capitalize_ascii/StringLabels.capitalize_ascii instead.=N=S=N=@@=N=R=N=@@@@@=8=:@@s@,uncapitalize @.@@ @}2@@ @|@ @{@0>k>k1>>@0ocaml.deprecated7>>8>>@	FUse String.uncapitalize_ascii/StringLabels.uncapitalize_ascii instead.B>>C>>@@E>>F>>@@@@@H>>@@Ft@)get_uint8 @X@@ @z@K@@ @yO@@ @x@ @w@ @v@`CuCuaCuC@@_u@(get_int8 @q@@ @u@d@@ @th@@ @s@ @r@ @q@yD
D
zD
D-@@xv@-get_uint16_ne @@@ @p@}@@ @o@@ @n@ @m@ @l@DDDD@@w@-get_uint16_be @@@ @k@@@ @j@@ @i@ @h@ @g@EGEGEGEo@@x@-get_uint16_le @@@ @f@@@ @e@@ @d@ @c@ @b@EEEF@@y@,get_int16_ne @@@ @a@@@ @`@@ @_@ @^@ @]@FFFF@@z@,get_int16_be @@@ @\@@@ @[@@ @Z@ @Y@ @X@GDGDGDGk@@{@,get_int16_le @@@ @W@@@ @V@@ @U@ @T@ @S@GGGH@@|@,get_int32_ne @ @@ @R@@@ @Q%int32L@@ @P@ @O@ @N@*HH+HH@@)}@,get_int32_be @;@@ @M@.@@ @L@@ @K@ @J@ @I@CI4I4DI4I]@@B~@,get_int32_le @T@@ @H@G@@ @G4@@ @F@ @E@ @D@\II]II@@[@,get_int64_ne @m@@ @C@`@@ @B%int64M@@ @A@ @@@ @?@w$JwJwx$JwJ@@v @@,get_int64_be @@@ @>@{@@ @=@@ @<@ @;@ @:@+KK+KKC@@ A@,get_int64_le @@@ @9@@@ @84@@ @7@ @6@ @5@2KK2KK@@ B@*unsafe_get @@@ @4@@@ @3@@ @2@ @1@ @02%string_unsafe_getBA<@@@@=LL=LL@@ C@*unsafe_set @|@@ @/@@@ @.@@@ @-@@ @,@ @+@ @*@ @)2%string_unsafe_setCA`@@@@@>LL?M6ML@0ocaml.deprecated?M6M;?M6MK@@?M6M8@@ D@+unsafe_blit @@@ @(@@@ @'@@@ @&@@@ @%@@@ @$@@ @#@ @"@ @!@ @ @ @@ @0caml_blit_stringE@@@@@@@@)@MMMM*BMM@'noalloc0BMM1BMM@@4BMM@@2 E@+unsafe_fill @@@ @@7@@ @@=@@ @@;@@ @4@@ @@ @@ @@ @@ @0caml_fill_stringD@Ҡ@@@@@@_CMM`ENN,@'noallocfDMN
gDMN@@jDMN
kDMN@0ocaml.deprecatedqENNrENN+@@uENN@@s F@@@		@	A@vZ<0
֠pV< ʠkM/ϠgC% rU9ҠmD	eM5ՠs[A)Ơ@
@ A  8 @@@A@@ @@@@@@@@A@ @@@ @@@@ @@@ @@ @@ @
@@@ @@@ @@@@@ @@@ @
@ @	@@ @@ @@ @@@@ @@ @@@@ @@@ @@@ @@ @@@@ @@@ @@@ @ @ @@@@ @@@ @@@ @@ @@@ @@@ @@@@ @@@ @@ @@ @@@ @@@ @@~{@@ @@@ @z@@ @@ @@ @@y@v@u @t@@ @@s@@ @r@@ @@ @@ @@q@n@m @@@ @@@@ @l@@ @@ @@ @@i@f@e @@@ @@@@ @d@@ @@ @@ @@c@`@_ ^\@@ @@[@@ @Z@@ @@ @@ @@Y@V@U TR@@ @@Q@@ @P@@ @@ @@ @@O@L@K @J@@ @@I@@ @@H@@ @G@@ @@ @@ @@ @@F@C@B @A@@ @@@@@ @@?@@ @>@@ @@ @@ @@ @@=@:@9 @8@@ @@7@@ @6@@ @@ @@ @@5@2@1 @0@@ @@/@@ @@.@@ @-@@ @@ @@ @@ @@,@)@( @'@@ @@&@@ @%$@@ @@@ @@ @@ @@#@ @ @@@@ @@@ @@ @@@@ @@@ @@ @@ @@@@ @@@@ @@@@ @@@ @@ @@ @@@@ @@@ @@ @@ @@@
@ @@@@@ @@ @@ @@@@@ @@ @@ @@ @@@@ @@ @@ @@@ @@ @@@@ @@@ @@ @@ @@@@ @@@@ @@@ @@ @@@@ @@@ @@ @@ @@@@ @@@@ @@@ @@ @@@@ @@@ @@ @@ @@@@ @@@ @@@ @@ @@@@ @@@ @@@ @@ @@@@ @@@ @@@ @@ @@@@ @@@ @@@ @@ @@@@ @@@ @@@ @~@ @}@@@ @@@ @|@@ @{@ @z@@@ @@@@ @y@@ @x@ @w@@@ @v@@ @u@ @t@ @s@@@ @@@@ @r@@@ @q@@ @p@ @o@ @n@@@ @m@@ @l@ @k@ @j@@@ @@@ @i@@@ @h@@@ @g@@ @f@ @e@ @d@ @c@@@ @@@ @b@@@ @a@@@ @`@@ @_@@ @^@ @]@ @\@ @[@@@ @@@ @Z@@@ @Y@@@ @X@@ @W@ @V@ @U@ @T@@@ @@@ @S@@@ @R@@@ @Q@@ @P@@ @O@ @N@ @M@ @L@@~@} @|@@ @K@{@@ @Jz@@ @I@ @H@ @G@y@v@u @t@@ @F@s@@ @Erq@@ @D@@ @C@ @B@ @A@p@m@l @k@@ @@@j@@ @?i@@ @>@ @=@ @<@h@e@d @c@@ @;@b@@ @:a`@@ @9@@ @8@ @7@ @6@_@\@[ @W@@ @5ZWVU@@ @4@@ @3@ @2@T@Q@P @i@@ @1lONM@@ @/L@@ @0@ @.@@ @-@ @,@K@H@G @FED@@ @+@@ @*@@ @)@ @(@C@@@? @>@@ @'=@@ @&@ @%<85@ @@@ @$@@@ @#@@@ @"@@ @!@ @ @ @@ @@ @@@ @@@@ @@@@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@ @@@@ @@@ @@@ @@ @@@ @@@ @@@@ @@@@ @
@@@ @@@ @@ @
@ @	@ @@ @@@ @@@ @@@ @@ @@@ @@@ @@@ @@ @@r@q @p@@ @ o@@ @@ @@nkT@S @R@@ @Q@@ @@ @@PM6@5 @4@@ @@3@@ @2@@ @@ @@ @@1@.@- @,@@ @@+@@ @*@@ @@ @@ @@)@&@% @$@@ @@#@@ @"@@ @@ @@ @@!@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@
 @@@ @@@@ @
@@ @@ @@ @@	@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@@ @@@ @@@@ @@@ @@ @@ @@@ @@@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@@ @@@@ @@@@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@ @@~ @}@@ @@|@@ @@{@@ @@z@@ @y@@ @@ @@ @@ @@ @xqnY@@Rll@@@@
ߠԠɠyiYI4Ѡ|g\QF;0%ȠvfRA)
٠ΠxhXH8(ؠȠd@  0 YXXYYYYY@onhg\[PODC32
ut`_JI/.}|baLK21yxmlWV76+*zyihXWGF65%$@@@%bytesC@@ @#pos#intA@@ @#len
@@ @@$charB@@ @$unitF@@ @@ @@ @@ @@ @0caml_fill_stringD@ @@@@@@0stringLabels.mliCMMENN0@'noallocDMN	DMN@@DMN
DMN@0ocaml.deprecatedENNENN/@@ENN@@4Stdlib__StringLabels F#src&stringO@@ @&'src_posP@@ @%#dstb@@ @$'dst_pos`@@ @##lenh@@ @"V@@ @!@ @ @ @@ @@ @@ @0caml_blit_stringE@T@@@@@@@T@M-M-UBMM@'noalloc[BMM\BMM@@_BMM@@H Ew@@@ @-@@@ @,@@@ @+@@ @*@ @)@ @(@ @'2%string_unsafe_setCA@@@@@>LL?MM,@0ocaml.deprecated?MM?MM+@@?MM@@u D@r@@ @2@@@ @1@@ @0@ @/@ @.2%string_unsafe_getBA@@@@=LL=LL@@ C@@@ @7@@@ @6%int64M@@ @5@ @4@ @3@2KK2KK@@ B@@@ @<@@@ @;@@ @:@ @9@ @8@+JJ+JK#@@ A4@@@ @A@
@@ @@0@@ @?@ @>@ @=@$JWJW$JWJ@@ @\@@@ @F@!@@ @E%int32L@@ @D@ @C@ @B@IIII@@@@@ @K@:@@ @J@@ @I@ @H@ @G@IIII=@@~@@@ @P@Q@@ @O0@@ @N@ @M@ @L@5HqHq6HqH@@}@@@ @U@h@@ @Tl@@ @S@ @R@ @Q@LGGMGG@@6|@3@@ @Z@@@ @Y@@ @X@ @W@ @V@cG$G$dG$GK@@M{&@J@@ @_@@@ @^@@ @]@ @\@ @[@zF|F|{F|F@@dzN@a@@ @d@@@ @c@@ @b@ @a@ @`@EEEE@@{yv@x@@ @i@@@ @h@@ @g@ @f@ @e@E'E'E'EO@@x@@@ @n@@@ @m@@ @l@ @k@ @j@D{D{D{D@@w@@@ @s@@@ @r@@ @q@ @p@ @o@CCCD
@@v@@@ @x@	@@ @w
@@ @v@ @u@ @t@CUCUCUCy@@u@@@ @{@@ @z@ @y@>K>K>>@0ocaml.deprecated>o>t>o>@	FUse String.uncapitalize_ascii/StringLabels.uncapitalize_ascii instead.>>>>@@>>>>@@@@@>o>q@@tE@@@ @~ @@ @}@ @|@&<<'=.=w@0ocaml.deprecated-==.==-@	BUse String.capitalize_ascii/StringLabels.capitalize_ascii instead.8=.=39=.=u@@;=.=2<=.=v@@@@@>==@@'sy@$@@ @(@@ @@ @@N;;O;;@0ocaml.deprecatedU;;V;;@	@Use String.lowercase_ascii/StringLabels.lowercase_ascii instead.`;;a;;@@c;;d;;@@@@@f;;@@Or@L@@ @P@@ @@ @@v:
:
w:A:@0ocaml.deprecated}:+:0~:+:@@	@Use String.uppercase_ascii/StringLabels.uppercase_ascii instead.:A:F:A:@@:A:E:A:@@@@@:+:-@@wq@@@ @#pos@@ @#len@@ @@@@ @@@ @@ @@ @@ @@ @@8f8f88@0ocaml.deprecated8888@	(Use Bytes.fill/BytesLabels.fill instead.8888@@8888@@@@@88@@p:@@@ @@@ @@ @@7n7n77@0ocaml.deprecated7777@	&Strings now immutable: no need to copy7777@@7777@@@@@77@@o#src@@ @'src_pos*@@ @#dst<@@ @'dst_pos:@@ @#lenB@@ @0@@ @@ @@ @@ @@ @@ @@&55'56@@n@]@@ @@Y@@ @@O@@ @M@@ @@ @@ @@ @0%string_safe_setCAK@@@@@Iz33J{4:4y@0ocaml.deprecatedP{4:4?Q{4:4O@	&Use Bytes.set/BytesLabels.set instead.[{4:4Q\{4:4w@@^{4:4P_{4:4x@@@@@a{4:4<@@Jm@@@ @@@ @@ @2caml_create_stringAAy@@@uq2Y2Yvr22@0ocaml.deprecated|r22}r22@	,Use Bytes.create/BytesLabels.create instead.r22r22@@r22r22@@@@@r22@@vlO@&Stdlib#Seq!t@@ @@@ @!t @@ @@ @@j11j11@@k@@@ @!#Seq!t@@ @@@ @@ @@@ @@ @@e1717e171\@@j@/@@ @A#Seq!t@@ @@@ @@ @@^0@0@^0@0\@@i@@@ @@@@ @&optionJ@@ @@@ @@ @@ @@ W//W//@@h@@@ @@#@@ @7@@ @@ @@ @@T/,/,T/,/N@@g@@@@ @@:@@ @5R@@ @@@ @@ @@ @@3O..4O..@@fm@@@ @@V@@ @j@@ @@ @@ @@JL.Z.ZKL.Z.{@@4e@1@@ @@}@@ @@s@@ @n@@ @@@ @@ @@ @@ @@lE-T-TmE-T-@@Vd@S@@ @@@@ @@@@ @@@ @@ @@ @@ @@>,-,->,-,[@@sc
@p@@ @@@@ @@@@ @@@ @@@ @@ @@ @@ @@7+-+-7+-+e@@bE@@@ @@@@ @@@@ @@@ @@ @@ @@ @@/**/**;@@a}!f@@@ @@@@ @@@ @@ @@ @@@@ @@@ @@ @@ @@')>)>')>)s@@`!f@@@ @@@ @@ @@@@ @@@ @@ @@ @@#(x(x
#(x(@@_@@@ @@@ @@ @@''''@@^	 @@@ @@@ @@ @@.&&/&'@@]	@@@ @ @@ @@ @@?&;&;@&;&a@@)\	:@&@@ @*@@ @@ @@P	%%Q	%%@@:[	W@7@@ @;@@ @@ @@a #S#Sb #S#q@@KZ	t@H@@ @	L@@ @@ @@r ""s ""@@\Y	!f@@@ @$boolE@@ @@ @@i@@ @
@@ @@ @@ @
@ !! !"@@}X	!f@@@ @!@@ @@ @@@@ @+@@ @@ @@ @@ !W!W !W!@@W
!f@@@ @@!a @@ @@ @@@@ @$init@ @@ @@ @@      @@V
:!f@!a @#@@@ @'
@ @&@ @%$init@@@ @$@ @"@ @!@ @ @  @@U
v!f@%@@ @0@@@ @/@@ @.@ @-@ @,@@@ @+@@ @*@ @)@ @(@  A@@T
!f@:@@ @7>@@ @6@ @5@@@ @4@@ @3@ @2@ @1@8 WW9 W@@"S
#sepW@@ @=@'@@ @<$listI1@@ @;@@ @:@ @9@ @8@X Y M@@BR@?@@ @D#pos@@ @C#len@@ @BS@@ @A@ @@@ @?@ @>@y z %@@cQM@`@@ @I@@@ @H	@@ @G@ @F@ @E@ jj j@@zPz@w@@ @P@@@ @O@@@ @N&@@ @M@ @L@ @K@ @J@ pp p@@O@@@ @W@@@ @V@@@ @UC@@ @T@ @S@ @R@ @Q@  @@N&suffix@@ @\@@@ @[\@@ @Z@ @Y@ @X@  )@@M&prefix@@ @a@@@ @`u@@ @_@ @^@ @]@  [@@L/@a@@ @f@f@@ @e1@@ @d@ @c@ @b@ EE E`@@KV@v@@ @k@{@@ @j@@ @i@ @h@ @g@& ' @@J|@
@@ @p@@@ @o@@ @n@ @m@ @l@= > @@'I#sep&@@ @v@0@@ @u@@ @t5@@ @s@ @r@ @q@[ \ @@EH@B@@ @{@@@ @z@@ @y@ @x@ @w0%string_safe_getBAz@@@@w yllx yl@@aG@^@@ @~@@ @}@ @|.%string_lengthAA@@@ v v%@@vF
 @s@@ @@@ @@ @@ ohh oh@@E
=@@@ @@@ @@ @@ h h@@D
U@@ @@ b b@@C
v@@@ @!f@@@ @@@ @@ @@@ @@ @@ @@ [ [@@B
@@@ @@@@ @@@ @@ @@ @@ U U@@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H                Jacques Garrigue, Kyoto University RIMS                 E44E4@	H                                                                        FF@	H   Copyright 2001 Institut National de Recherche en Informatique et     GG@	H     en Automatique.                                                    HHg@	H                                                                         IhhIh@	H   All rights reserved.  This file is distributed under the terms of    JJ@	H   the GNU Lesser General Public License version 2.1, with the          K
KN@	H   special exception on linking described in the file LICENSE.          LOOLO@	H                                                                        MM@	H************************************************************************NN5@	/ Module [StringLabels]: labelled String module $P77%P7j@@  P +../ocamlopt0-strict-sequence(-absname"-w8+a-4-9-41-42-44-45-48-70"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal,-safe-string/-strict-formats2-function-sections)-nolabels.-no-alias-deps"-o8stdlib__StringLabels.cmx"-c9:(./stdlib @0=F̗^ё  0 ;::;;;;;@9@@8CamlinternalFormatBasics0ĵ'(jdǠM0-&fºnr39tߠ+Stdlib__Seq0Jd8_mJk.Stdlib__String0.BdJP.F4Y3i05OҹހA]^@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Caml1999Y030  +         ( 4Stdlib__StringLabels@05OҹހA]^.Stdlib__String0.BdJP.F4Y3+Stdlib__Seq0Jd8_mJk&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@.Stdlib__String0W\'"IĒ@@@@   <camlStdlib__String__make_183BA!n !c @@@$primJ:camlStdlib__Bytes__make_93@    )string.mliBL,,iA3Stdlib__String.make9Stdlib__String.make.(fun)@A@<camlStdlib__String__init_187BA!n !f @@@L:camlStdlib__Bytes__init_98
@    kBLOOkA3Stdlib__String.init9Stdlib__String.init.(fun)@
A@5camlStdlib__String__1 	 camlStdlib__Bytes__to_string_110AA!b p@;camlStdlib__Bytes__copy_105@    (bytes.ml}ck		}A7Stdlib__Bytes.to_string=Stdlib__Bytes.to_string.(fun)@A@	 camlStdlib__Bytes__of_string_113AA!s s@@    ~Rk
*
*~A7Stdlib__Bytes.of_string=Stdlib__Bytes.of_string.(fun)@A@>camlStdlib__String__concat_224BA@A@1camlStdlib__^_140BA@A@;camlStdlib__String__fun_839BA$prim65@1caml_string_equalB@ @@@@@@A@?camlStdlib__String__compare_399BA!x!y@3caml_string_compareB@ @@@@
@    \nA6Stdlib__String.compare<Stdlib__String.compare.(fun)@A@	#camlStdlib__String__starts_with_362BA@A@	!camlStdlib__String__ends_with_370BA@A@	%camlStdlib__String__contains_from_335CA@A@	&camlStdlib__String__rcontains_from_345CA@A@	 camlStdlib__String__contains_341BA!sW!cX@	@
@     Sf22 ðA7Stdlib__String.contains=Stdlib__String.contains.(fun)@A@;camlStdlib__String__sub_197CA!s Ǡ#ofs Ƞ#len @@@P:camlStdlib__Bytes__sub_116
@    rBWrA2Stdlib__String.sub8Stdlib__String.sub.(fun)@A@	%camlStdlib__String__split_on_char_379BA@A@@;camlStdlib__String__map_240BA!f 򠐠!s @@@\:camlStdlib__Bytes__map_256
@     ZBQ ZA2Stdlib__String.map8Stdlib__String.map.(fun)@
A@<camlStdlib__String__mapi_244BA!f !s @@@^;camlStdlib__Bytes__mapi_263
@     \BR

 \A3Stdlib__String.mapi9Stdlib__String.mapi.(fun)@
A@	!camlStdlib__String__fold_left_253CA!f !a !x@	 camlStdlib__Bytes__fold_left_270
@    % `BY
|
| `A8Stdlib__String.fold_left>Stdlib__String.fold_left.(fun)@A@	"camlStdlib__String__fold_right_248CA!f !x !a @	!camlStdlib__Bytes__fold_right_277
@    C ^BZ
K
K ^A9Stdlib__String.fold_right?Stdlib__String.fold_right.(fun)@A@?camlStdlib__String__for_all_262BA!f!s	@>camlStdlib__Bytes__for_all_291
@    [ dBU

 dA6Stdlib__String.for_all<Stdlib__String.for_all.(fun)@A@>camlStdlib__String__exists_258BA!f!s@=camlStdlib__Bytes__exists_284
@    s bBT

 bA5Stdlib__String.exists;Stdlib__String.exists.(fun)@A@<camlStdlib__String__trim_269AA@A@?camlStdlib__String__escaped_272AA@A@	'camlStdlib__String__uppercase_ascii_350AA!s`@@@~E0camlStdlib__Char@     B[RR ͰA>Stdlib__String.uppercase_ascii	$Stdlib__String.uppercase_ascii.(fun)    a \p A=Stdlib__Bytes.uppercase_ascii	#Stdlib__Bytes.uppercase_ascii.(fun)@@
    g \p @@    l Xr @A@	'camlStdlib__String__lowercase_ascii_353AA!sc@@@͠D0camlStdlib__Char@     B[ ϰA>Stdlib__String.lowercase_ascii	$Stdlib__String.lowercase_ascii.(fun)    \pA=Stdlib__Bytes.lowercase_ascii	#Stdlib__Bytes.lowercase_ascii.(fun)@@
    \p@@    Xr@A@	(camlStdlib__String__capitalize_ascii_356AA!sf@@@=camlStdlib__Bytes__apply1_316E0camlStdlib__Char@     B\ ѰA?Stdlib__String.capitalize_ascii	%Stdlib__String.capitalize_ascii.(fun)    
`t
A>Stdlib__Bytes.capitalize_ascii	$Stdlib__Bytes.capitalize_ascii.(fun)@@
    
`t
@@    
Yv
@A@	*camlStdlib__String__uncapitalize_ascii_359AA!si@@@(D0camlStdlib__Char@     B^ ӰA	!Stdlib__String.uncapitalize_ascii	'Stdlib__String.uncapitalize_ascii.(fun)    bvA	 Stdlib__Bytes.uncapitalize_ascii	&Stdlib__Bytes.uncapitalize_ascii.(fun)@@
    bv@@    [x@A@<camlStdlib__String__iter_230BA@A@=camlStdlib__String__iteri_235BA@A@	"camlStdlib__String__index_from_297CA@A@	&camlStdlib__String__index_from_opt_303CA@A@	#camlStdlib__String__rindex_from_317CA@A@	'camlStdlib__String__rindex_from_opt_330CA@A@=camlStdlib__String__index_284BA!s!c@	!camlStdlib__String__index_rec_279
X@    B \fNN A4Stdlib__String.index:Stdlib__String.index.(fun)@@@    L PjNN 
@A@	!camlStdlib__String__index_opt_293BA!s'!c(@	%camlStdlib__String__index_rec_opt_288
X@    c dn;; A8Stdlib__String.index_opt>Stdlib__String.index_opt.(fun)@@@    m Tr;; 
@A@>camlStdlib__String__rindex_313BA!s;!c<@	"camlStdlib__String__rindex_rec_309
FX@     _g A5Stdlib__String.rindex;Stdlib__String.rindex.(fun)@A@     ^l @@     Qn @A@	"camlStdlib__String__rindex_opt_326BA!sH!cI@	&camlStdlib__String__rindex_rec_opt_322
FX@     go44 A9Stdlib__String.rindex_opt?Stdlib__String.rindex_opt.(fun)@A@     ft44 @@     Uv44 @A@>camlStdlib__String__to_seq_403AA!s@=camlStdlib__Bytes__to_seq_439@    O`HHA5Stdlib__String.to_seq;Stdlib__String.to_seq.(fun)@A:camlStdlib__Bytes__fun_905A@#arg#env@:camlStdlib__Bytes__aux_442B	@@C@@@    BG-K-KA4Stdlib__Bytes.to_seq:Stdlib__Bytes.to_seq.(fun)@A@?camlStdlib__String__to_seqi_425AA!s@>camlStdlib__Bytes__to_seqi_465@    
Pbjj
A6Stdlib__String.to_seqi<Stdlib__String.to_seqi.(fun)@A:camlStdlib__Bytes__fun_929A@21@:camlStdlib__Bytes__aux_468B@@
C@@@    BG--A5Stdlib__Bytes.to_seqi;Stdlib__Bytes.to_seqi.(fun)@A@>camlStdlib__String__of_seq_428AA!g@@@.=camlStdlib__Bytes__of_seq_472	@    +OYA5Stdlib__String.of_seq;Stdlib__String.of_seq.(fun)@A@	"camlStdlib__Bytes__blit_string_185EA@A@<camlStdlib__String__copy_192AA!s @@@GN@    CnBPnA3Stdlib__String.copy9Stdlib__String.copy.(fun)@
A@;camlStdlib__Bytes__fill_172DA@A@	!camlStdlib__String__uppercase_386AA!s@@@_tC0camlStdlib__Char@    ` BU A8Stdlib__String.uppercase>Stdlib__String.uppercase.(fun)    /Vd,,A7Stdlib__Bytes.uppercase=Stdlib__Bytes.uppercase.(fun)@@
    5Vd,,@@    :Rf,,@A@	!camlStdlib__String__lowercase_389AA!s@@@B0camlStdlib__Char@     BU!! A8Stdlib__String.lowercase>Stdlib__String.lowercase.(fun)    VVd,*,*A7Stdlib__Bytes.lowercase=Stdlib__Bytes.lowercase.(fun)@@
    \Vd,*,*@@    aRf,*,*@A@	"camlStdlib__String__capitalize_392AA!s@@@ΠC0camlStdlib__Char@     BVQQ A9Stdlib__String.capitalize?Stdlib__String.capitalize.(fun)    }Zh,R,RA8Stdlib__Bytes.capitalize>Stdlib__Bytes.capitalize.(fun)@@
    Zh,R,R@@    Sj,R,R@A@	$camlStdlib__String__uncapitalize_395AA!s@@@B0camlStdlib__Char@     BX A;Stdlib__String.uncapitalize	!Stdlib__String.uncapitalize.(fun)    \j,},}A:Stdlib__Bytes.uncapitalize	 Stdlib__Bytes.uncapitalize.(fun)@@
    \j,},}@@    Ul,},}@A@;camlStdlib__String__fun_837BA87@Z@@A@	 camlStdlib__String__get_int8_435BA!s!i@MK^
@    Sg  A7Stdlib__String.get_int8=Stdlib__String.get_int8.(fun)    CR33İA6Stdlib__Bytes.get_int8<Stdlib__Bytes.get_int8.(fun)@w@
    Bj33	@w@    B A33@A@;camlStdlib__String__fun_835BA:9@  +@@	@@A@	%camlStdlib__String__get_uint16_be_443BA!s!i@b  ,@@
@    LXq!L!LA<Stdlib__String.get_uint16_be	"Stdlib__String.get_uint16_be.(fun)    dw33˰A;Stdlib__Bytes.get_uint16_be	!Stdlib__Bytes.get_uint16_be.(fun)@@
    !]w33@A@	%camlStdlib__String__get_uint16_le_439BA!s!i@  ,@@	@    mXq!!A<Stdlib__String.get_uint16_le	"Stdlib__String.get_uint16_le.(fun)    <GX33ȰA;Stdlib__Bytes.get_uint16_le	!Stdlib__Bytes.get_uint16_le.(fun)@A@	$camlStdlib__String__get_int16_ne_447BA!s!i@MK  ,@@
@    Wo!~!~A;Stdlib__String.get_int16_ne	!Stdlib__String.get_int16_ne.(fun)    ^CV4-4-ϰA:Stdlib__Bytes.get_int16_ne	 Stdlib__Bytes.get_int16_ne.(fun)@o@
    gBo4-4-	@o@    mB G4-4-@A@	$camlStdlib__String__get_int16_be_455BA!sɠ!i@MKbs
@    Wo!!A;Stdlib__String.get_int16_be	!Stdlib__String.get_int16_be.(fun)    CV44հA:Stdlib__Bytes.get_int16_be	 Stdlib__Bytes.get_int16_be.(fun)v@
ro@    Bo44@o@    B G44@A@	$camlStdlib__String__get_int16_le_451BA!sŠ!i@MK
@    Wo!!A;Stdlib__String.get_int16_le	!Stdlib__String.get_int16_le.(fun)    CV44ҰA:Stdlib__Bytes.get_int16_le	 Stdlib__Bytes.get_int16_le.(fun)o@
    Bo44	@o@    B G44@A@;camlStdlib__String__fun_833BA<;@  +A@	@@A@	$camlStdlib__String__get_int32_be_463BA!sѠ!i@  0A  ,A@@    *Wo">">A;Stdlib__String.get_int32_be	!Stdlib__String.get_int32_be.(fun)    dv55ܰA:Stdlib__Bytes.get_int32_be	 Stdlib__Bytes.get_int32_be.(fun)@@
    ]v55@A@	$camlStdlib__String__get_int32_le_459BA!s͠!i@  ,A@	@    KWo""A;Stdlib__String.get_int32_le	!Stdlib__String.get_int32_le.(fun)    GW55ٰA:Stdlib__Bytes.get_int32_le	 Stdlib__Bytes.get_int32_le.(fun)@A@;camlStdlib__String__fun_831BA>=@  +B@	@@A@	$camlStdlib__String__get_int64_be_471BA!s٠!i@  0B  ,B@@    ~Wo""A;Stdlib__String.get_int64_be	!Stdlib__String.get_int64_be.(fun)    Mdv6z6zA:Stdlib__Bytes.get_int64_be	 Stdlib__Bytes.get_int64_be.(fun)@@
    S]v6z6z@A@	$camlStdlib__String__get_int64_le_467BA!sՠ!i@  ,B@	@    Wo"n"nA;Stdlib__String.get_int64_le	!Stdlib__String.get_int64_le.(fun)    nGW6J6JA:Stdlib__Bytes.get_int64_le	 Stdlib__Bytes.get_int64_le.(fun)@A@@~.Nxٰmcxg                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      /*    inline.h
 *
 *    Copyright (C) 2012 by Larry Wall and others
 *
 *    You may distribute under the terms of either the GNU General Public
 *    License or the Artistic License, as specified in the README file.
 *
 *    This file contains tables and code adapted from
 *    https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which requires this
 *    copyright notice:

Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

 *
 * This file is a home for static inline functions that cannot go in other
 * header files, because they depend on proto.h (included after most other
 * headers) or struct definitions.
 *
 * Each section names the header file that the functions "belong" to.
 */

/* ------------------------------- av.h ------------------------------- */

/*
=for apidoc_section $AV
=for apidoc av_count
Returns the number of elements in the array C<av>.  This is the true length of
the array, including any undefined elements.  It is always the same as
S<C<av_top_index(av) + 1>>.

=cut
*/
PERL_STATIC_INLINE Size_t
Perl_av_count(pTHX_ AV *av)
{
    PERL_ARGS_ASSERT_AV_COUNT;
    assert(SvTYPE(av) == SVt_PVAV);

    return AvFILL(av) + 1;
}

/* ------------------------------- av.c ------------------------------- */

/*
=for apidoc av_store_simple

This is a cut-down version of av_store that assumes that the array is
very straightforward - no magic, not readonly, and AvREAL - and that
C<key> is not negative. This function MUST NOT be used in situations
where any of those assumptions may not hold.

Stores an SV in an array.  The array index is specified as C<key>. It
can be dereferenced to get the C<SV*> that was stored there (= C<val>)).

Note that the caller is responsible for suitably incrementing the reference
count of C<val> before the call.

Approximate Perl equivalent: C<splice(@myarray, $key, 1, $val)>.

=cut
*/

PERL_STATIC_INLINE SV**
Perl_av_store_simple(pTHX_ AV *av, SSize_t key, SV *val)
{
    SV** ary;

    PERL_ARGS_ASSERT_AV_STORE_SIMPLE;
    assert(SvTYPE(av) == SVt_PVAV);
    assert(!SvMAGICAL(av));
    assert(!SvREADONLY(av));
    assert(AvREAL(av));
    assert(key > -1);

    ary = AvARRAY(av);

    if (AvFILLp(av) < key) {
        if (key > AvMAX(av)) {
            av_extend(av,key);
            ary = AvARRAY(av);
        }
        AvFILLp(av) = key;
    } else
        SvREFCNT_dec(ary[key]);

    ary[key] = val;
    return &ary[key];
}

/*
=for apidoc av_fetch_simple

This is a cut-down version of av_fetch that assumes that the array is
very straightforward - no magic, not readonly, and AvREAL - and that
C<key> is not negative. This function MUST NOT be used in situations
where any of those assumptions may not hold.

Returns the SV at the specified index in the array.  The C<key> is the
index.  If lval is true, you are guaranteed to get a real SV back (in case
it wasn't real before), which you can then modify.  Check that the return
value is non-null before dereferencing it to a C<SV*>.

The rough perl equivalent is C<$myarray[$key]>.

=cut
*/

PERL_STATIC_INLINE SV**
Perl_av_fetch_simple(pTHX_ AV *av, SSize_t key, I32 lval)
{
    PERL_ARGS_ASSERT_AV_FETCH_SIMPLE;
    assert(SvTYPE(av) == SVt_PVAV);
    assert(!SvMAGICAL(av));
    assert(!SvREADONLY(av));
    assert(AvREAL(av));
    assert(key > -1);

    if ( (key > AvFILLp(av)) || !AvARRAY(av)[key]) {
        return lval ? av_store_simple(av,key,newSV_type(SVt_NULL)) : NULL;
    } else {
        return &AvARRAY(av)[key];
    }
}

/* ------------------------------- cv.h ------------------------------- */

/*
=for apidoc_section $CV
=for apidoc CvGV
Returns the GV associated with the CV C<sv>, reifying it if necessary.

=cut
*/
PERL_STATIC_INLINE GV *
Perl_CvGV(pTHX_ CV *sv)
{
    PERL_ARGS_ASSERT_CVGV;

    return CvNAMED(sv)
        ? Perl_cvgv_from_hek(aTHX_ sv)
        : ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_gv;
}

/*
=for apidoc CvDEPTH
Returns the recursion level of the CV C<sv>.  Hence >= 2 indicates we are in a
recursive call.

=cut
*/
PERL_STATIC_INLINE I32 *
Perl_CvDEPTH(const CV * const sv)
{
    PERL_ARGS_ASSERT_CVDEPTH;
    assert(SvTYPE(sv) == SVt_PVCV || SvTYPE(sv) == SVt_PVFM);

    return &((XPVCV*)SvANY(sv))->xcv_depth;
}

/*
 CvPROTO returns the prototype as stored, which is not necessarily what
 the interpreter should be using. Specifically, the interpreter assumes
 that spaces have been stripped, which has been the case if the prototype
 was added by toke.c, but is generally not the case if it was added elsewhere.
 Since we can't enforce the spacelessness at assignment time, this routine
 provides a temporary copy at parse time with spaces removed.
 I<orig> is the start of the original buffer, I<len> is the length of the
 prototype and will be updated when this returns.
 */

#ifdef PERL_CORE
PERL_STATIC_INLINE char *
S_strip_spaces(pTHX_ const char * orig, STRLEN * const len)
{
    SV * tmpsv;
    char * tmps;
    tmpsv = newSVpvn_flags(orig, *len, SVs_TEMP);
    tmps = SvPVX(tmpsv);
    while ((*len)--) {
        if (!isSPACE(*orig))
            *tmps++ = *orig;
        orig++;
    }
    *tmps = '\0';
    *len = tmps - SvPVX(tmpsv);
                return SvPVX(tmpsv);
}
#endif

/* ------------------------------- mg.h ------------------------------- */

#if defined(PERL_CORE) || defined(PERL_EXT)
/* assumes get-magic and stringification have already occurred */
PERL_STATIC_INLINE STRLEN
S_MgBYTEPOS(pTHX_ MAGIC *mg, SV *sv, const char *s, STRLEN len)
{
    assert(mg->mg_type == PERL_MAGIC_regex_global);
    assert(mg->mg_len != -1);
    if (mg->mg_flags & MGf_BYTES || !DO_UTF8(sv))
        return (STRLEN)mg->mg_len;
    else {
        const STRLEN pos = (STRLEN)mg->mg_len;
        /* Without this check, we may read past the end of the buffer: */
        if (pos > sv_or_pv_len_utf8(sv, s, len)) return len+1;
        return sv_or_pv_pos_u2b(sv, s, pos, NULL);
    }
}
#endif

/* ------------------------------- pad.h ------------------------------ */

#if defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
PERL_STATIC_INLINE bool
S_PadnameIN_SCOPE(const PADNAME * const pn, const U32 seq)
{
    PERL_ARGS_ASSERT_PADNAMEIN_SCOPE;

    /* is seq within the range _LOW to _HIGH ?
     * This is complicated by the fact that PL_cop_seqmax
     * may have wrapped around at some point */
    if (COP_SEQ_RANGE_LOW(pn) == PERL_PADSEQ_INTRO)
        return FALSE; /* not yet introduced */

    if (COP_SEQ_RANGE_HIGH(pn) == PERL_PADSEQ_INTRO) {
    /* in compiling scope */
        if (
            (seq >  COP_SEQ_RANGE_LOW(pn))
            ? (seq - COP_SEQ_RANGE_LOW(pn) < (U32_MAX >> 1))
            : (COP_SEQ_RANGE_LOW(pn) - seq > (U32_MAX >> 1))
        )
            return TRUE;
    }
    else if (
        (COP_SEQ_RANGE_LOW(pn) > COP_SEQ_RANGE_HIGH(pn))
        ?
            (  seq >  COP_SEQ_RANGE_LOW(pn)
            || seq <= COP_SEQ_RANGE_HIGH(pn))

        :    (  seq >  COP_SEQ_RANGE_LOW(pn)
             && seq <= COP_SEQ_RANGE_HIGH(pn))
    )
        return TRUE;
    return FALSE;
}
#endif

/* ------------------------------- pp.h ------------------------------- */

PERL_STATIC_INLINE I32
Perl_TOPMARK(pTHX)
{
    DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
                                 "MARK top  %p %" IVdf "\n",
                                  PL_markstack_ptr,
                                  (IV)*PL_markstack_ptr)));
    return *PL_markstack_ptr;
}

PERL_STATIC_INLINE I32
Perl_POPMARK(pTHX)
{
    DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
                                 "MARK pop  %p %" IVdf "\n",
                                  (PL_markstack_ptr-1),
                                  (IV)*(PL_markstack_ptr-1))));
    assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow");
    return *PL_markstack_ptr--;
}

/* ----------------------------- regexp.h ----------------------------- */

/* PVLVs need to act as a superset of all scalar types - they are basically
 * PVMGs with a few extra fields.
 * REGEXPs are first class scalars, but have many fields that can't be copied
 * into a PVLV body.
 *
 * Hence we take a different approach - instead of a copy, PVLVs store a pointer
 * back to the original body. To avoid increasing the size of PVLVs just for the
 * rare case of REGEXP assignment, this pointer is stored in the memory usually
 * used for SvLEN(). Hence the check for SVt_PVLV below, and the ? : ternary to
 * read the pointer from the two possible locations. The macro SvLEN() wraps the
 * access to the union's member xpvlenu_len, but there is no equivalent macro
 * for wrapping the union's member xpvlenu_rx, hence the direct reference here.
 *
 * See commit df6b4bd56551f2d3 for more details. */

PERL_STATIC_INLINE struct regexp *
Perl_ReANY(const REGEXP * const re)
{
    XPV* const p = (XPV*)SvANY(re);

    PERL_ARGS_ASSERT_REANY;
    assert(isREGEXP(re));

    return SvTYPE(re) == SVt_PVLV ? p->xpv_len_u.xpvlenu_rx
                                   : (struct regexp *)p;
}

/* ------------------------------- sv.h ------------------------------- */

PERL_STATIC_INLINE bool
Perl_SvTRUE(pTHX_ SV *sv)
{
    PERL_ARGS_ASSERT_SVTRUE;

    if (UNLIKELY(sv == NULL))
        return FALSE;
    SvGETMAGIC(sv);
    return SvTRUE_nomg_NN(sv);
}

PERL_STATIC_INLINE bool
Perl_SvTRUE_nomg(pTHX_ SV *sv)
{
    PERL_ARGS_ASSERT_SVTRUE_NOMG;

    if (UNLIKELY(sv == NULL))
        return FALSE;
    return SvTRUE_nomg_NN(sv);
}

PERL_STATIC_INLINE bool
Perl_SvTRUE_NN(pTHX_ SV *sv)
{
    PERL_ARGS_ASSERT_SVTRUE_NN;

    SvGETMAGIC(sv);
    return SvTRUE_nomg_NN(sv);
}

PERL_STATIC_INLINE bool
Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback)
{
    PERL_ARGS_ASSERT_SVTRUE_COMMON;

    if (UNLIKELY(SvIMMORTAL_INTERP(sv)))
        return SvIMMORTAL_TRUE(sv);

    if (! SvOK(sv))
        return FALSE;

    if (SvPOK(sv))
        return SvPVXtrue(sv);

    if (SvIOK(sv))
        return SvIVX(sv) != 0; /* casts to bool */

    if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv)))))
        return TRUE;

    if (sv_2bool_is_fallback)
        return sv_2bool_nomg(sv);

    return isGV_with_GP(sv);
}


PERL_STATIC_INLINE SV *
Perl_SvREFCNT_inc(SV *sv)
{
    if (LIKELY(sv != NULL))
        SvREFCNT(sv)++;
    return sv;
}
PERL_STATIC_INLINE SV *
Perl_SvREFCNT_inc_NN(SV *sv)
{
    PERL_ARGS_ASSERT_SVREFCNT_INC_NN;

    SvREFCNT(sv)++;
    return sv;
}
PERL_STATIC_INLINE void
Perl_SvREFCNT_inc_void(SV *sv)
{
    if (LIKELY(sv != NULL))
        SvREFCNT(sv)++;
}
PERL_STATIC_INLINE void
Perl_SvREFCNT_dec(pTHX_ SV *sv)
{
    if (LIKELY(sv != NULL)) {
        U32 rc = SvREFCNT(sv);
        if (LIKELY(rc > 1))
            SvREFCNT(sv) = rc - 1;
        else
            Perl_sv_free2(aTHX_ sv, rc);
    }
}

PERL_STATIC_INLINE void
Perl_SvREFCNT_dec_NN(pTHX_ SV *sv)
{
    U32 rc = SvREFCNT(sv);

    PERL_ARGS_ASSERT_SVREFCNT_DEC_NN;

    if (LIKELY(rc > 1))
        SvREFCNT(sv) = rc - 1;
    else
        Perl_sv_free2(aTHX_ sv, rc);
}

/*
=for apidoc SvAMAGIC_on

Indicate that C<sv> has overloading (active magic) enabled.

=cut
*/

PERL_STATIC_INLINE void
Perl_SvAMAGIC_on(SV *sv)
{
    PERL_ARGS_ASSERT_SVAMAGIC_ON;
    assert(SvROK(sv));

    if (SvOBJECT(SvRV(sv))) HvAMAGIC_on(SvSTASH(SvRV(sv)));
}

/*
=for apidoc SvAMAGIC_off

Indicate that C<sv> has overloading (active magic) disabled.

=cut
*/

PERL_STATIC_INLINE void
Perl_SvAMAGIC_off(SV *sv)
{
    PERL_ARGS_ASSERT_SVAMAGIC_OFF;

    if (SvROK(sv) && SvOBJECT(SvRV(sv)))
        HvAMAGIC_off(SvSTASH(SvRV(sv)));
}

PERL_STATIC_INLINE U32
Perl_SvPADSTALE_on(SV *sv)
{
    assert(!(SvFLAGS(sv) & SVs_PADTMP));
    return SvFLAGS(sv) |= SVs_PADSTALE;
}
PERL_STATIC_INLINE U32
Perl_SvPADSTALE_off(SV *sv)
{
    assert(!(SvFLAGS(sv) & SVs_PADTMP));
    return SvFLAGS(sv) &= ~SVs_PADSTALE;
}
#if defined(PERL_CORE) || defined (PERL_EXT)
PERL_STATIC_INLINE STRLEN
S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp)
{
    PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B;
    if (SvGAMAGIC(sv)) {
        U8 *hopped = utf8_hop((U8 *)pv, pos);
        if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped);
        return (STRLEN)(hopped - (U8 *)pv);
    }
    return sv_pos_u2b_flags(sv,pos,lenp,SV_CONST_RETURN);
}
#endif

/* ------------------------------- utf8.h ------------------------------- */

/*
=for apidoc_section $unicode
*/

PERL_STATIC_INLINE void
Perl_append_utf8_from_native_byte(const U8 byte, U8** dest)
{
    /* Takes an input 'byte' (Latin1 or EBCDIC) and appends it to the UTF-8
     * encoded string at '*dest', updating '*dest' to include it */

    PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE;

    if (NATIVE_BYTE_IS_INVARIANT(byte))
        *((*dest)++) = byte;
    else {
        *((*dest)++) = UTF8_EIGHT_BIT_HI(byte);
        *((*dest)++) = UTF8_EIGHT_BIT_LO(byte);
    }
}

/*
=for apidoc valid_utf8_to_uvchr
Like C<L<perlapi/utf8_to_uvchr_buf>>, but should only be called when it is
known that the next character in the input UTF-8 string C<s> is well-formed
(I<e.g.>, it passes C<L<perlapi/isUTF8_CHAR>>.  Surrogates, non-character code
points, and non-Unicode code points are allowed.

=cut

 */

PERL_STATIC_INLINE UV
Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
{
    const UV expectlen = UTF8SKIP(s);
    const U8* send = s + expectlen;
    UV uv = *s;

    PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR;

    if (retlen) {
        *retlen = expectlen;
    }

    /* An invariant is trivially returned */
    if (expectlen == 1) {
        return uv;
    }

    /* Remove the leading bits that indicate the number of bytes, leaving just
     * the bits that are part of the value */
    uv = NATIVE_UTF8_TO_I8(uv) & UTF_START_MASK(expectlen);

    /* Now, loop through the remaining bytes, accumulating each into the
     * working total as we go.  (I khw tried unrolling the loop for up to 4
     * bytes, but there was no performance improvement) */
    for (++s; s < send; s++) {
        uv = UTF8_ACCUMULATE(uv, *s);
    }

    return UNI_TO_NATIVE(uv);

}

/*
=for apidoc is_utf8_invariant_string

Returns TRUE if the first C<len> bytes of the string C<s> are the same
regardless of the UTF-8 encoding of the string (or UTF-EBCDIC encoding on
EBCDIC machines); otherwise it returns FALSE.  That is, it returns TRUE if they
are UTF-8 invariant.  On ASCII-ish machines, all the ASCII characters and only
the ASCII characters fit this definition.  On EBCDIC machines, the ASCII-range
characters are invariant, but so also are the C1 controls.

If C<len> is 0, it will be calculated using C<strlen(s)>, (which means if you
use this option, that C<s> can't have embedded C<NUL> characters and has to
have a terminating C<NUL> byte).

See also
C<L</is_utf8_string>>,
C<L</is_utf8_string_flags>>,
C<L</is_utf8_string_loc>>,
C<L</is_utf8_string_loc_flags>>,
C<L</is_utf8_string_loclen>>,
C<L</is_utf8_string_loclen_flags>>,
C<L</is_utf8_fixed_width_buf_flags>>,
C<L</is_utf8_fixed_width_buf_loc_flags>>,
C<L</is_utf8_fixed_width_buf_loclen_flags>>,
C<L</is_strict_utf8_string>>,
C<L</is_strict_utf8_string_loc>>,
C<L</is_strict_utf8_string_loclen>>,
C<L</is_c9strict_utf8_string>>,
C<L</is_c9strict_utf8_string_loc>>,
and
C<L</is_c9strict_utf8_string_loclen>>.

=cut

*/

#define is_utf8_invariant_string(s, len)                                    \
                                is_utf8_invariant_string_loc(s, len, NULL)

/*
=for apidoc is_utf8_invariant_string_loc

Like C<L</is_utf8_invariant_string>> but upon failure, stores the location of
the first UTF-8 variant character in the C<ep> pointer; if all characters are
UTF-8 invariant, this function does not change the contents of C<*ep>.

=cut

*/

PERL_STATIC_INLINE bool
Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep)
{
    const U8* send;
    const U8* x = s;

    PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING_LOC;

    if (len == 0) {
        len = strlen((const char *)s);
    }

    send = s + len;

/* This looks like 0x010101... */
#  define PERL_COUNT_MULTIPLIER   (~ (UINTMAX_C(0)) / 0xFF)

/* This looks like 0x808080... */
#  define PERL_VARIANTS_WORD_MASK (PERL_COUNT_MULTIPLIER * 0x80)
#  define PERL_WORDSIZE            sizeof(PERL_UINTMAX_T)
#  define PERL_WORD_BOUNDARY_MASK (PERL_WORDSIZE - 1)

/* Evaluates to 0 if 'x' is at a word boundary; otherwise evaluates to 1, by
 * or'ing together the lowest bits of 'x'.  Hopefully the final term gets
 * optimized out completely on a 32-bit system, and its mask gets optimized out
 * on a 64-bit system */
#  define PERL_IS_SUBWORD_ADDR(x) (1 & (       PTR2nat(x)                     \
                                      |   (  PTR2nat(x) >> 1)                 \
                                      | ( ( (PTR2nat(x)                       \
                                           & PERL_WORD_BOUNDARY_MASK) >> 2))))

#ifndef EBCDIC

    /* Do the word-at-a-time iff there is at least one usable full word.  That
     * means that after advancing to a word boundary, there still is at least a
     * full word left.  The number of bytes needed to advance is 'wordsize -
     * offset' unless offset is 0. */
    if ((STRLEN) (send - x) >= PERL_WORDSIZE

                            /* This term is wordsize if subword; 0 if not */
                          + PERL_WORDSIZE * PERL_IS_SUBWORD_ADDR(x)

                            /* 'offset' */
                          - (PTR2nat(x) & PERL_WORD_BOUNDARY_MASK))
    {

        /* Process per-byte until reach word boundary.  XXX This loop could be
         * eliminated if we knew that this platform had fast unaligned reads */
        while (PTR2nat(x) & PERL_WORD_BOUNDARY_MASK) {
            if (! UTF8_IS_INVARIANT(*x)) {
                if (ep) {
                    *ep = x;
                }

                return FALSE;
            }
            x++;
        }

        /* Here, we know we have at least one full word to process.  Process
         * per-word as long as we have at least a full word left */
        do {
            if ((* (PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK)  {

                /* Found a variant.  Just return if caller doesn't want its
                 * exact position */
                if (! ep) {
                    return FALSE;
                }

#  if   BYTEORDER == 0x1234 || BYTEORDER == 0x12345678    \
     || BYTEORDER == 0x4321 || BYTEORDER == 0x87654321

                *ep = x + variant_byte_number(* (PERL_UINTMAX_T *) x);
                assert(*ep >= s && *ep < send);

                return FALSE;

#  else   /* If weird byte order, drop into next loop to do byte-at-a-time
           checks. */

                break;
#  endif
            }

            x += PERL_WORDSIZE;

        } while (x + PERL_WORDSIZE <= send);
    }

#endif      /* End of ! EBCDIC */

    /* Process per-byte */
    while (x < send) {
        if (! UTF8_IS_INVARIANT(*x)) {
            if (ep) {
                *ep = x;
            }

            return FALSE;
        }

        x++;
    }

    return TRUE;
}

/* See if the platform has builtins for finding the most/least significant bit,
 * and which one is right for using on 32 and 64 bit operands */
#if (__has_builtin(__builtin_clz) || PERL_GCC_VERSION_GE(3,4,0))
#  if U32SIZE == INTSIZE
#    define PERL_CLZ_32 __builtin_clz
#  endif
#  if defined(U64TYPE) && U64SIZE == INTSIZE
#    define PERL_CLZ_64 __builtin_clz
#  endif
#endif
#if (__has_builtin(__builtin_ctz) || PERL_GCC_VERSION_GE(3,4,0))
#  if U32SIZE == INTSIZE
#    define PERL_CTZ_32 __builtin_ctz
#  endif
#  if defined(U64TYPE) && U64SIZE == INTSIZE
#    define PERL_CTZ_64 __builtin_ctz
#  endif
#endif

#if (__has_builtin(__builtin_clzl) || PERL_GCC_VERSION_GE(3,4,0))
#  if U32SIZE == LONGSIZE && ! defined(PERL_CLZ_32)
#    define PERL_CLZ_32 __builtin_clzl
#  endif
#  if defined(U64TYPE) && U64SIZE == LONGSIZE && ! defined(PERL_CLZ_64)
#    define PERL_CLZ_64 __builtin_clzl
#  endif
#endif
#if (__has_builtin(__builtin_ctzl) || PERL_GCC_VERSION_GE(3,4,0))
#  if U32SIZE == LONGSIZE && ! defined(PERL_CTZ_32)
#    define PERL_CTZ_32 __builtin_ctzl
#  endif
#  if defined(U64TYPE) && U64SIZE == LONGSIZE && ! defined(PERL_CTZ_64)
#    define PERL_CTZ_64 __builtin_ctzl
#  endif
#endif

#if (__has_builtin(__builtin_clzll) || PERL_GCC_VERSION_GE(3,4,0))
#  if U32SIZE == LONGLONGSIZE && ! defined(PERL_CLZ_32)
#    define PERL_CLZ_32 __builtin_clzll
#  endif
#  if defined(U64TYPE) && U64SIZE == LONGLONGSIZE && ! defined(PERL_CLZ_64)
#    define PERL_CLZ_64 __builtin_clzll
#  endif
#endif
#if (__has_builtin(__builtin_ctzll) || PERL_GCC_VERSION_GE(3,4,0))
#  if U32SIZE == LONGLONGSIZE && ! defined(PERL_CTZ_32)
#    define PERL_CTZ_32 __builtin_ctzll
#  endif
#  if defined(U64TYPE) && U64SIZE == LONGLONGSIZE && ! defined(PERL_CTZ_64)
#    define PERL_CTZ_64 __builtin_ctzll
#  endif
#endif

#if defined(_MSC_VER)
#  include <intrin.h>
#  pragma intrinsic(_BitScanForward)
#  pragma intrinsic(_BitScanReverse)
#  ifdef _WIN64
#    pragma intrinsic(_BitScanForward64)
#    pragma intrinsic(_BitScanReverse64)
#  endif
#endif

/* The reason there are not checks to see if ffs() and ffsl() are available for
 * determining the lsb, is because these don't improve on the deBruijn method
 * fallback, which is just a branchless integer multiply, array element
 * retrieval, and shift.  The others, even if the function call overhead is
 * optimized out, have to cope with the possibility of the input being all
 * zeroes, and almost certainly will have conditionals for this eventuality.
 * khw, at the time of this commit, looked at the source for both gcc and clang
 * to verify this.  (gcc used a method inferior to deBruijn.) */

/* Below are functions to find the first, last, or only set bit in a word.  On
 * platforms with 64-bit capability, there is a pair for each operation; the
 * first taking a 64 bit operand, and the second a 32 bit one.  The logic is
 * the same in each pair, so the second is stripped of most comments. */

#ifdef U64TYPE  /* HAS_QUAD not usable outside the core */

PERL_STATIC_INLINE unsigned
Perl_lsbit_pos64(U64 word)
{
    /* Find the position (0..63) of the least significant set bit in the input
     * word */

    ASSUME(word != 0);

    /* If we can determine that the platform has a usable fast method to get
     * this info, use that */

#  if defined(PERL_CTZ_64)
#    define PERL_HAS_FAST_GET_LSB_POS64

    return (unsigned) PERL_CTZ_64(word);

#  elif U64SIZE == 8 && defined(_WIN64) && defined(_MSC_VER)
#    define PERL_HAS_FAST_GET_LSB_POS64

    {
        unsigned long index;
        _BitScanForward64(&index, word);
        return (unsigned)index;
    }

#  else

    /* Here, we didn't find a fast method for finding the lsb.  Fall back to
     * making the lsb the only set bit in the word, and use our function that
     * works on words with a single bit set.
     *
     * Isolate the lsb;
     * https://stackoverflow.com/questions/757059/position-of-least-significant-bit-that-is-set
     *
     * The word will look like this, with a rightmost set bit in position 's':
     * ('x's are don't cares, and 'y's are their complements)
     *      s
     *  x..x100..00
     *  y..y011..11      Complement
     *  y..y100..00      Add 1
     *  0..0100..00      And with the original
     *
     *  (Yes, complementing and adding 1 is just taking the negative on 2's
     *  complement machines, but not on 1's complement ones, and some compilers
     *  complain about negating an unsigned.)
     */
    return single_1bit_pos64(word & (~word + 1));

#  endif

}

#  define lsbit_pos_uintmax_(word) lsbit_pos64(word)
#else   /* ! QUAD */
#  define lsbit_pos_uintmax_(word) lsbit_pos32(word)
#endif

PERL_STATIC_INLINE unsigned     /* Like above for 32 bit word */
Perl_lsbit_pos32(U32 word)
{
    /* Find the position (0..31) of the least significant set bit in the input
     * word */

    ASSUME(word != 0);

#if defined(PERL_CTZ_32)
#  define PERL_HAS_FAST_GET_LSB_POS32

    return (unsigned) PERL_CTZ_32(word);

#elif U32SIZE == 4 && defined(_MSC_VER)
#  define PERL_HAS_FAST_GET_LSB_POS32

    {
        unsigned long index;
        _BitScanForward(&index, word);
        return (unsigned)index;
    }

#else

    return single_1bit_pos32(word & (~word + 1));

#endif

}


/* Convert the leading zeros count to the bit position of the first set bit.
 * This just subtracts from the highest position, 31 or 63.  But some compilers
 * don't optimize this optimally, and so a bit of bit twiddling encourages them
 * to do the right thing.  It turns out that subtracting a smaller non-negative
 * number 'x' from 2**n-1 for any n is the same as taking the exclusive-or of
 * the two numbers.  To see why, first note that the sum of any number, x, and
 * its complement, x', is all ones.  So all ones minus x is x'.  Then note that
 * the xor of x and all ones is x'. */
#define LZC_TO_MSBIT_POS_(size, lzc)  ((size##SIZE * CHARBITS - 1) ^ (lzc))

#ifdef U64TYPE  /* HAS_QUAD not usable outside the core */

PERL_STATIC_INLINE unsigned
Perl_msbit_pos64(U64 word)
{
    /* Find the position (0..63) of the most significant set bit in the input
     * word */

    ASSUME(word != 0);

    /* If we can determine that the platform has a usable fast method to get
     * this, use that */

#  if defined(PERL_CLZ_64)
#    define PERL_HAS_FAST_GET_MSB_POS64

    return (unsigned) LZC_TO_MSBIT_POS_(U64, PERL_CLZ_64(word));

#  elif U64SIZE == 8 && defined(_WIN64) && defined(_MSC_VER)
#    define PERL_HAS_FAST_GET_MSB_POS64

    {
        unsigned long index;
        _BitScanReverse64(&index, word);
        return (unsigned)index;
    }

#  else

    /* Here, we didn't find a fast method for finding the msb.  Fall back to
     * making the msb the only set bit in the word, and use our function that
     * works on words with a single bit set.
     *
     * Isolate the msb; http://codeforces.com/blog/entry/10330
     *
     * Only the most significant set bit matters.  Or'ing word with its right
     * shift of 1 makes that bit and the next one to its right both 1.
     * Repeating that with the right shift of 2 makes for 4 1-bits in a row.
     * ...  We end with the msb and all to the right being 1. */
    word |= (word >>  1);
    word |= (word >>  2);
    word |= (word >>  4);
    word |= (word >>  8);
    word |= (word >> 16);
    word |= (word >> 32);

    /* Then subtracting the right shift by 1 clears all but the left-most of
     * the 1 bits, which is our desired result */
    word -= (word >> 1);

    /* Now we have a single bit set */
    return single_1bit_pos64(word);

#  endif

}

#  define msbit_pos_uintmax_(word) msbit_pos64(word)
#else   /* ! QUAD */
#  define msbit_pos_uintmax_(word) msbit_pos32(word)
#endif

PERL_STATIC_INLINE unsigned
Perl_msbit_pos32(U32 word)
{
    /* Find the position (0..31) of the most significant set bit in the input
     * word */

    ASSUME(word != 0);

#if defined(PERL_CLZ_32)
#  define PERL_HAS_FAST_GET_MSB_POS32

    return (unsigned) LZC_TO_MSBIT_POS_(U32, PERL_CLZ_32(word));

#elif U32SIZE == 4 && defined(_MSC_VER)
#  define PERL_HAS_FAST_GET_MSB_POS32

    {
        unsigned long index;
        _BitScanReverse(&index, word);
        return (unsigned)index;
    }

#else

    word |= (word >>  1);
    word |= (word >>  2);
    word |= (word >>  4);
    word |= (word >>  8);
    word |= (word >> 16);
    word -= (word >> 1);
    return single_1bit_pos32(word);

#endif

}

#if UVSIZE == U64SIZE
#  define msbit_pos(word)  msbit_pos64(word)
#  define lsbit_pos(word)  lsbit_pos64(word)
#elif UVSIZE == U32SIZE
#  define msbit_pos(word)  msbit_pos32(word)
#  define lsbit_pos(word)  lsbit_pos32(word)
#endif

#ifdef U64TYPE  /* HAS_QUAD not usable outside the core */

PERL_STATIC_INLINE unsigned
Perl_single_1bit_pos64(U64 word)
{
    /* Given a 64-bit word known to contain all zero bits except one 1 bit,
     * find and return the 1's position: 0..63 */

#  ifdef PERL_CORE    /* macro not exported */
    ASSUME(isPOWER_OF_2(word));
#  else
    ASSUME(word && (word & (word-1)) == 0);
#  endif

    /* The only set bit is both the most and least significant bit.  If we have
     * a fast way of finding either one, use that.
     *
     * It may appear at first glance that those functions call this one, but
     * they don't if the corresponding #define is set */

#  ifdef PERL_HAS_FAST_GET_MSB_POS64

    return msbit_pos64(word);

#  elif defined(PERL_HAS_FAST_GET_LSB_POS64)

    return lsbit_pos64(word);

#  else

    /* The position of the only set bit in a word can be quickly calculated
     * using deBruijn sequences.  See for example
     * https://en.wikipedia.org/wiki/De_Bruijn_sequence */
    return PL_deBruijn_bitpos_tab64[(word * PERL_deBruijnMagic64_)
                                                    >> PERL_deBruijnShift64_];
#  endif

}

#endif

PERL_STATIC_INLINE unsigned
Perl_single_1bit_pos32(U32 word)
{
    /* Given a 32-bit word known to contain all zero bits except one 1 bit,
     * find and return the 1's position: 0..31 */

#ifdef PERL_CORE    /* macro not exported */
    ASSUME(isPOWER_OF_2(word));
#else
    ASSUME(word && (word & (word-1)) == 0);
#endif
#ifdef PERL_HAS_FAST_GET_MSB_POS32

    return msbit_pos32(word);

#elif defined(PERL_HAS_FAST_GET_LSB_POS32)

    return lsbit_pos32(word);

/* Unlikely, but possible for the platform to have a wider fast operation but
 * not a narrower one.  But easy enough to handle the case by widening the
 * parameter size.  (Going the other way, emulating 64 bit by two 32 bit ops
 * would be slower than the deBruijn method.) */
#elif defined(PERL_HAS_FAST_GET_MSB_POS64)

    return msbit_pos64(word);

#elif defined(PERL_HAS_FAST_GET_LSB_POS64)

    return lsbit_pos64(word);

#else

    return PL_deBruijn_bitpos_tab32[(word * PERL_deBruijnMagic32_)
                                                    >> PERL_deBruijnShift32_];
#endif

}

#ifndef EBCDIC

PERL_STATIC_INLINE unsigned int
Perl_variant_byte_number(PERL_UINTMAX_T word)
{
    /* This returns the position in a word (0..7) of the first variant byte in
     * it.  This is a helper function.  Note that there are no branches */

    /* Get just the msb bits of each byte */
    word &= PERL_VARIANTS_WORD_MASK;

    /* This should only be called if we know there is a variant byte in the
     * word */
    assert(word);

#  if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678

    /* Bytes are stored like
     *  Byte8 ... Byte2 Byte1
     *  63..56...15...8 7...0
     * so getting the lsb of the whole modified word is getting the msb of the
     * first byte that has its msb set */
    word = lsbit_pos_uintmax_(word);

    /* Here, word contains the position 7,15,23,...55,63 of that bit.  Convert
     * to 0..7 */
    return (unsigned int) ((word + 1) >> 3) - 1;

#  elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321

    /* Bytes are stored like
     *  Byte1 Byte2  ... Byte8
     * 63..56 55..47 ... 7...0
     * so getting the msb of the whole modified word is getting the msb of the
     * first byte that has its msb set */
    word = msbit_pos_uintmax_(word);

    /* Here, word contains the position 63,55,...,23,15,7 of that bit.  Convert
     * to 0..7 */
    word = ((word + 1) >> 3) - 1;

    /* And invert the result because of the reversed byte order on this
     * platform */
    word = CHARBITS - word - 1;

    return (unsigned int) word;

#  else
#    error Unexpected byte order
#  endif

}

#endif
#if defined(PERL_CORE) || defined(PERL_EXT)

/*
=for apidoc variant_under_utf8_count

This function looks at the sequence of bytes between C<s> and C<e>, which are
assumed to be encoded in ASCII/Latin1, and returns how many of them would
change should the string be translated into UTF-8.  Due to the nature of UTF-8,
each of these would occupy two bytes instead of the single one in the input
string.  Thus, this function returns the precise number of bytes the string
would expand by when translated to UTF-8.

Unlike most of the other functions that have C<utf8> in their name, the input
to this function is NOT a UTF-8-encoded string.  The function name is slightly
I<odd> to emphasize this.

This function is internal to Perl because khw thinks that any XS code that
would want this is probably operating too close to the internals.  Presenting a
valid use case could change that.

See also
C<L<perlapi/is_utf8_invariant_string>>
and
C<L<perlapi/is_utf8_invariant_string_loc>>,

=cut

*/

PERL_STATIC_INLINE Size_t
S_variant_under_utf8_count(const U8* const s, const U8* const e)
{
    const U8* x = s;
    Size_t count = 0;

    PERL_ARGS_ASSERT_VARIANT_UNDER_UTF8_COUNT;

#  ifndef EBCDIC

    /* Test if the string is long enough to use word-at-a-time.  (Logic is the
     * same as for is_utf8_invariant_string()) */
    if ((STRLEN) (e - x) >= PERL_WORDSIZE
                          + PERL_WORDSIZE * PERL_IS_SUBWORD_ADDR(x)
                          - (PTR2nat(x) & PERL_WORD_BOUNDARY_MASK))
    {

        /* Process per-byte until reach word boundary.  XXX This loop could be
         * eliminated if we knew that this platform had fast unaligned reads */
        while (PTR2nat(x) & PERL_WORD_BOUNDARY_MASK) {
            count += ! UTF8_IS_INVARIANT(*x++);
        }

        /* Process per-word as long as we have at least a full word left */
        do {    /* Commit 03c1e4ab1d6ee9062fb3f94b0ba31db6698724b1 contains an
                   explanation of how this works */
            PERL_UINTMAX_T increment
                = ((((* (PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK) >> 7)
                      * PERL_COUNT_MULTIPLIER)
                    >> ((PERL_WORDSIZE - 1) * CHARBITS);
            count += (Size_t) increment;
            x += PERL_WORDSIZE;
        } while (x + PERL_WORDSIZE <= e);
    }

#  endif

    /* Process per-byte */
    while (x < e) {
        if (! UTF8_IS_INVARIANT(*x)) {
            count++;
        }

        x++;
    }

    return count;
}

#endif

#ifndef PERL_IN_REGEXEC_C   /* Keep  these around for that file */
#  undef PERL_WORDSIZE
#  undef PERL_COUNT_MULTIPLIER
#  undef PERL_WORD_BOUNDARY_MASK
#  undef PERL_VARIANTS_WORD_MASK
#endif

/*
=for apidoc is_utf8_string

Returns TRUE if the first C<len> bytes of string C<s> form a valid
Perl-extended-UTF-8 string; returns FALSE otherwise.  If C<len> is 0, it will
be calculated using C<strlen(s)> (which means if you use this option, that C<s>
can't have embedded C<NUL> characters and has to have a terminating C<NUL>
byte).  Note that all characters being ASCII constitute 'a valid UTF-8 string'.

This function considers Perl's extended UTF-8 to be valid.  That means that
code points above Unicode, surrogates, and non-character code points are
considered valid by this function.  Use C<L</is_strict_utf8_string>>,
C<L</is_c9strict_utf8_string>>, or C<L</is_utf8_string_flags>> to restrict what
code points are considered valid.

See also
C<L</is_utf8_invariant_string>>,
C<L</is_utf8_invariant_string_loc>>,
C<L</is_utf8_string_loc>>,
C<L</is_utf8_string_loclen>>,
C<L</is_utf8_fixed_width_buf_flags>>,
C<L</is_utf8_fixed_width_buf_loc_flags>>,
C<L</is_utf8_fixed_width_buf_loclen_flags>>,

=cut
*/

#define is_utf8_string(s, len)  is_utf8_string_loclen(s, len, NULL, NULL)

#if defined(PERL_CORE) || defined (PERL_EXT)

/*
=for apidoc is_utf8_non_invariant_string

Returns TRUE if L<perlapi/is_utf8_invariant_string> returns FALSE for the first
C<len> bytes of the string C<s>, but they are, nonetheless, legal Perl-extended
UTF-8; otherwise returns FALSE.

A TRUE return means that at least one code point represented by the sequence
either is a wide character not representable as a single byte, or the
representation differs depending on whether the sequence is encoded in UTF-8 or
not.

See also
C<L<perlapi/is_utf8_invariant_string>>,
C<L<perlapi/is_utf8_string>>

=cut

This is commonly used to determine if a SV's UTF-8 flag should be turned on.
It generally needn't be if its string is entirely UTF-8 invariant, and it
shouldn't be if it otherwise contains invalid UTF-8.

It is an internal function because khw thinks that XS code shouldn't be working
at this low a level.  A valid use case could change that.

*/

PERL_STATIC_INLINE bool
Perl_is_utf8_non_invariant_string(const U8* const s, STRLEN len)
{
    const U8 * first_variant;

    PERL_ARGS_ASSERT_IS_UTF8_NON_INVARIANT_STRING;

    if (is_utf8_invariant_string_loc(s, len, &first_variant)) {
        return FALSE;
    }

    return is_utf8_string(first_variant, len - (first_variant - s));
}

#endif

/*
=for apidoc is_strict_utf8_string

Returns TRUE if the first C<len> bytes of string C<s> form a valid
UTF-8-encoded string that is fully interchangeable by any application using
Unicode rules; otherwise it returns FALSE.  If C<len> is 0, it will be
calculated using C<strlen(s)> (which means if you use this option, that C<s>
can't have embedded C<NUL> characters and has to have a terminating C<NUL>
byte).  Note that all characters being ASCII constitute 'a valid UTF-8 string'.

This function returns FALSE for strings containing any
code points above the Unicode max of 0x10FFFF, surrogate code points, or
non-character code points.

See also
C<L</is_utf8_invariant_string>>,
C<L</is_utf8_invariant_string_loc>>,
C<L</is_utf8_string>>,
C<L</is_utf8_string_flags>>,
C<L</is_utf8_string_loc>>,
C<L</is_utf8_string_loc_flags>>,
C<L</is_utf8_string_loclen>>,
C<L</is_utf8_string_loclen_flags>>,
C<L</is_utf8_fixed_width_buf_flags>>,
C<L</is_utf8_fixed_width_buf_loc_flags>>,
C<L</is_utf8_fixed_width_buf_loclen_flags>>,
C<L</is_strict_utf8_string_loc>>,
C<L</is_strict_utf8_string_loclen>>,
C<L</is_c9strict_utf8_string>>,
C<L</is_c9strict_utf8_string_loc>>,
and
C<L</is_c9strict_utf8_string_loclen>>.

=cut
*/

#define is_strict_utf8_string(s, len)  is_strict_utf8_string_loclen(s, len, NULL, NULL)

/*
=for apidoc is_c9strict_utf8_string

Returns TRUE if the first C<len> bytes of string C<s> form a valid
UTF-8-encoded string that conforms to
L<Unicode Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>;
otherwise it returns FALSE.  If C<len> is 0, it will be calculated using
C<strlen(s)> (which means if you use this option, that C<s> can't have embedded
C<NUL> characters and has to have a terminating C<NUL> byte).  Note that all
characters being ASCII constitute 'a valid UTF-8 string'.

This function returns FALSE for strings containing any code points above the
Unicode max of 0x10FFFF or surrogate code points, but accepts non-character
code points per
L<Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>.

See also
C<L</is_utf8_invariant_string>>,
C<L</is_utf8_invariant_string_loc>>,
C<L</is_utf8_string>>,
C<L</is_utf8_string_flags>>,
C<L</is_utf8_string_loc>>,
C<L</is_utf8_string_loc_flags>>,
C<L</is_utf8_string_loclen>>,
C<L</is_utf8_string_loclen_flags>>,
C<L</is_utf8_fixed_width_buf_flags>>,
C<L</is_utf8_fixed_width_buf_loc_flags>>,
C<L</is_utf8_fixed_width_buf_loclen_flags>>,
C<L</is_strict_utf8_string>>,
C<L</is_strict_utf8_string_loc>>,
C<L</is_strict_utf8_string_loclen>>,
C<L</is_c9strict_utf8_string_loc>>,
and
C<L</is_c9strict_utf8_string_loclen>>.

=cut
*/

#define is_c9strict_utf8_string(s, len)  is_c9strict_utf8_string_loclen(s, len, NULL, 0)

/*
=for apidoc is_utf8_string_flags

Returns TRUE if the first C<len> bytes of string C<s> form a valid
UTF-8 string, subject to the restrictions imposed by C<flags>;
returns FALSE otherwise.  If C<len> is 0, it will be calculated
using C<strlen(s)> (which means if you use this option, that C<s> can't have
embedded C<NUL> characters and has to have a terminating C<NUL> byte).  Note
that all characters being ASCII constitute 'a valid UTF-8 string'.

If C<flags> is 0, this gives the same results as C<L</is_utf8_string>>; if
C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results
as C<L</is_strict_utf8_string>>; and if C<flags> is
C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives the same results as
C<L</is_c9strict_utf8_string>>.  Otherwise C<flags> may be any
combination of the C<UTF8_DISALLOW_I<foo>> flags understood by
C<L</utf8n_to_uvchr>>, with the same meanings.

See also
C<L</is_utf8_invariant_string>>,
C<L</is_utf8_invariant_string_loc>>,
C<L</is_utf8_string>>,
C<L</is_utf8_string_loc>>,
C<L</is_utf8_string_loc_flags>>,
C<L</is_utf8_string_loclen>>,
C<L</is_utf8_string_loclen_flags>>,
C<L</is_utf8_fixed_width_buf_flags>>,
C<L</is_utf8_fixed_width_buf_loc_flags>>,
C<L</is_utf8_fixed_width_buf_loclen_flags>>,
C<L</is_strict_utf8_string>>,
C<L</is_strict_utf8_string_loc>>,
C<L</is_strict_utf8_string_loclen>>,
C<L</is_c9strict_utf8_string>>,
C<L</is_c9strict_utf8_string_loc>>,
and
C<L</is_c9strict_utf8_string_loclen>>.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_utf8_string_flags(const U8 *s, STRLEN len, const U32 flags)
{
    const U8 * first_variant;

    PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS;
    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
                          |UTF8_DISALLOW_PERL_EXTENDED)));

    if (len == 0) {
        len = strlen((const char *)s);
    }

    if (flags == 0) {
        return is_utf8_string(s, len);
    }

    if ((flags & ~UTF8_DISALLOW_PERL_EXTENDED)
                                        == UTF8_DISALLOW_ILLEGAL_INTERCHANGE)
    {
        return is_strict_utf8_string(s, len);
    }

    if ((flags & ~UTF8_DISALLOW_PERL_EXTENDED)
                                       == UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE)
    {
        return is_c9strict_utf8_string(s, len);
    }

    if (! is_utf8_invariant_string_loc(s, len, &first_variant)) {
        const U8* const send = s + len;
        const U8* x = first_variant;

        while (x < send) {
            STRLEN cur_len = isUTF8_CHAR_flags(x, send, flags);
            if (UNLIKELY(! cur_len)) {
                return FALSE;
            }
            x += cur_len;
        }
    }

    return TRUE;
}

/*

=for apidoc is_utf8_string_loc

Like C<L</is_utf8_string>> but stores the location of the failure (in the
case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer.

See also C<L</is_utf8_string_loclen>>.

=cut
*/

#define is_utf8_string_loc(s, len, ep)  is_utf8_string_loclen(s, len, ep, 0)

/*

=for apidoc is_utf8_string_loclen

Like C<L</is_utf8_string>> but stores the location of the failure (in the
case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer, and the number of UTF-8
encoded characters in the C<el> pointer.

See also C<L</is_utf8_string_loc>>.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
{
    const U8 * first_variant;

    PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN;

    if (len == 0) {
        len = strlen((const char *) s);
    }

    if (is_utf8_invariant_string_loc(s, len, &first_variant)) {
        if (el)
            *el = len;

        if (ep) {
            *ep = s + len;
        }

        return TRUE;
    }

    {
        const U8* const send = s + len;
        const U8* x = first_variant;
        STRLEN outlen = first_variant - s;

        while (x < send) {
            const STRLEN cur_len = isUTF8_CHAR(x, send);
            if (UNLIKELY(! cur_len)) {
                break;
            }
            x += cur_len;
            outlen++;
        }

        if (el)
            *el = outlen;

        if (ep) {
            *ep = x;
        }

        return (x == send);
    }
}

/* The perl core arranges to never call the DFA below without there being at
 * least one byte available to look at.  This allows the DFA to use a do {}
 * while loop which means that calling it with a UTF-8 invariant has a single
 * conditional, same as the calling code checking for invariance ahead of time.
 * And having the calling code remove that conditional speeds up by that
 * conditional, the case where it wasn't invariant.  So there's no reason to
 * check before caling this.
 *
 * But we don't know this for non-core calls, so have to retain the check for
 * them. */
#ifdef PERL_CORE
#  define PERL_NON_CORE_CHECK_EMPTY(s,e)  assert((e) > (s))
#else
#  define PERL_NON_CORE_CHECK_EMPTY(s,e)  if ((e) <= (s)) return FALSE
#endif

/*
 * DFA for checking input is valid UTF-8 syntax.
 *
 * This uses adaptations of the table and algorithm given in
 * https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
 * documentation of the original version.  A copyright notice for the original
 * version is given at the beginning of this file.  The Perl adapations are
 * documented at the definition of PL_extended_utf8_dfa_tab[].
 *
 * This dfa is fast.  There are three exit conditions:
 *  1) a well-formed code point, acceptable to the table
 *  2) the beginning bytes of an incomplete character, whose completion might
 *     or might not be acceptable
 *  3) unacceptable to the table.  Some of the adaptations have certain,
 *     hopefully less likely to occur, legal inputs be unacceptable to the
 *     table, so these must be sorted out afterwards.
 *
 * This macro is a complete implementation of the code executing the DFA.  It
 * is passed the input sequence bounds and the table to use, and what to do
 * for each of the exit conditions.  There are three canned actions, likely to
 * be the ones you want:
 *      DFA_RETURN_SUCCESS_
 *      DFA_RETURN_FAILURE_
 *      DFA_GOTO_TEASE_APART_FF_
 *
 * You pass a parameter giving the action to take for each of the three
 * possible exit conditions:
 *
 * 'accept_action'  This is executed when the DFA accepts the input.
 *                  DFA_RETURN_SUCCESS_ is the most likely candidate.
 * 'reject_action'  This is executed when the DFA rejects the input.
 *                  DFA_RETURN_FAILURE_ is a candidate, or 'goto label' where
 *                  you have written code to distinguish the rejecting state
 *                  results.  Because it happens in several places, and
 *                  involves #ifdefs, the special action
 *                  DFA_GOTO_TEASE_APART_FF_ is what you want with
 *                  PL_extended_utf8_dfa_tab.  On platforms without
 *                  EXTRA_LONG_UTF8, there is no need to tease anything apart,
 *                  so this evaluates to DFA_RETURN_FAILURE_; otherwise you
 *                  need to have a label 'tease_apart_FF' that it will transfer
 *                  to.
 * 'incomplete_char_action'  This is executed when the DFA ran off the end
 *                  before accepting or rejecting the input.
 *                  DFA_RETURN_FAILURE_ is the likely action, but you could
 *                  have a 'goto', or NOOP.  In the latter case the DFA drops
 *                  off the end, and you place your code to handle this case
 *                  immediately after it.
 */

#define DFA_RETURN_SUCCESS_      return s - s0
#define DFA_RETURN_FAILURE_      return 0
#ifdef HAS_EXTRA_LONG_UTF8
#  define DFA_TEASE_APART_FF_  goto tease_apart_FF
#else
#  define DFA_TEASE_APART_FF_  DFA_RETURN_FAILURE_
#endif

#define PERL_IS_UTF8_CHAR_DFA(s0, e, dfa_tab,                               \
                              accept_action,                                \
                              reject_action,                                \
                              incomplete_char_action)                       \
    STMT_START {                                                            \
        const U8 * s = s0;                                                  \
        UV state = 0;                                                       \
                                                                            \
        PERL_NON_CORE_CHECK_EMPTY(s,e);                                     \
                                                                            \
        do {                                                                \
            state = dfa_tab[256 + state + dfa_tab[*s]];                     \
            s++;                                                            \
                                                                            \
            if (state == 0) {   /* Accepting state */                       \
                accept_action;                                              \
            }                                                               \
                                                                            \
            if (UNLIKELY(state == 1)) { /* Rejecting state */               \
                reject_action;                                              \
            }                                                               \
        } while (s < e);                                                    \
                                                                            \
        /* Here, dropped out of loop before end-of-char */                  \
        incomplete_char_action;                                             \
    } STMT_END


/*

=for apidoc isUTF8_CHAR

Evaluates to non-zero if the first few bytes of the string starting at C<s> and
looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
that represents some code point; otherwise it evaluates to 0.  If non-zero, the
value gives how many bytes starting at C<s> comprise the code point's
representation.  Any bytes remaining before C<e>, but beyond the ones needed to
form the first code point in C<s>, are not examined.

The code point can be any that will fit in an IV on this machine, using Perl's
extension to official UTF-8 to represent those higher than the Unicode maximum
of 0x10FFFF.  That means that this macro is used to efficiently decide if the
next few bytes in C<s> is legal UTF-8 for a single character.

Use C<L</isSTRICT_UTF8_CHAR>> to restrict the acceptable code points to those
defined by Unicode to be fully interchangeable across applications;
C<L</isC9_STRICT_UTF8_CHAR>> to use the L<Unicode Corrigendum
#9|http://www.unicode.org/versions/corrigendum9.html> definition of allowable
code points; and C<L</isUTF8_CHAR_flags>> for a more customized definition.

Use C<L</is_utf8_string>>, C<L</is_utf8_string_loc>>, and
C<L</is_utf8_string_loclen>> to check entire strings.

Note also that a UTF-8 "invariant" character (i.e. ASCII on non-EBCDIC
machines) is a valid UTF-8 character.

=cut

This uses an adaptation of the table and algorithm given in
https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
documentation of the original version.  A copyright notice for the original
version is given at the beginning of this file.  The Perl adapation is
documented at the definition of PL_extended_utf8_dfa_tab[].
*/

PERL_STATIC_INLINE Size_t
Perl_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
{
    PERL_ARGS_ASSERT_ISUTF8_CHAR;

    PERL_IS_UTF8_CHAR_DFA(s0, e, PL_extended_utf8_dfa_tab,
                          DFA_RETURN_SUCCESS_,
                          DFA_TEASE_APART_FF_,
                          DFA_RETURN_FAILURE_);

    /* Here, we didn't return success, but dropped out of the loop.  In the
     * case of PL_extended_utf8_dfa_tab, this means the input is either
     * malformed, or the start byte was FF on a platform that the dfa doesn't
     * handle FF's.  Call a helper function. */

#ifdef HAS_EXTRA_LONG_UTF8

  tease_apart_FF:

    /* In the case of PL_extended_utf8_dfa_tab, getting here means the input is
     * either malformed, or was for the largest possible start byte, which we
     * now check, not inline */
    if (*s0 != I8_TO_NATIVE_UTF8(0xFF)) {
        return 0;
    }

    return is_utf8_FF_helper_(s0, e,
                              FALSE /* require full, not partial char */
                             );
#endif

}

/*

=for apidoc isSTRICT_UTF8_CHAR

Evaluates to non-zero if the first few bytes of the string starting at C<s> and
looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some
Unicode code point completely acceptable for open interchange between all
applications; otherwise it evaluates to 0.  If non-zero, the value gives how
many bytes starting at C<s> comprise the code point's representation.  Any
bytes remaining before C<e>, but beyond the ones needed to form the first code
point in C<s>, are not examined.

The largest acceptable code point is the Unicode maximum 0x10FFFF, and must not
be a surrogate nor a non-character code point.  Thus this excludes any code
point from Perl's extended UTF-8.

This is used to efficiently decide if the next few bytes in C<s> is
legal Unicode-acceptable UTF-8 for a single character.

Use C<L</isC9_STRICT_UTF8_CHAR>> to use the L<Unicode Corrigendum
#9|http://www.unicode.org/versions/corrigendum9.html> definition of allowable
code points; C<L</isUTF8_CHAR>> to check for Perl's extended UTF-8;
and C<L</isUTF8_CHAR_flags>> for a more customized definition.

Use C<L</is_strict_utf8_string>>, C<L</is_strict_utf8_string_loc>>, and
C<L</is_strict_utf8_string_loclen>> to check entire strings.

=cut

This uses an adaptation of the tables and algorithm given in
https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
documentation of the original version.  A copyright notice for the original
version is given at the beginning of this file.  The Perl adapation is
documented at the definition of strict_extended_utf8_dfa_tab[].

*/

PERL_STATIC_INLINE Size_t
Perl_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
{
    PERL_ARGS_ASSERT_ISSTRICT_UTF8_CHAR;

    PERL_IS_UTF8_CHAR_DFA(s0, e, PL_strict_utf8_dfa_tab,
                          DFA_RETURN_SUCCESS_,
                          goto check_hanguls,
                          DFA_RETURN_FAILURE_);
  check_hanguls:

    /* Here, we didn't return success, but dropped out of the loop.  In the
     * case of PL_strict_utf8_dfa_tab, this means the input is either
     * malformed, or was for certain Hanguls; handle them specially */

    /* The dfa above drops out for incomplete or illegal inputs, and certain
     * legal Hanguls; check and return accordingly */
    return is_HANGUL_ED_utf8_safe(s0, e);
}

/*

=for apidoc isC9_STRICT_UTF8_CHAR

Evaluates to non-zero if the first few bytes of the string starting at C<s> and
looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some
Unicode non-surrogate code point; otherwise it evaluates to 0.  If non-zero,
the value gives how many bytes starting at C<s> comprise the code point's
representation.  Any bytes remaining before C<e>, but beyond the ones needed to
form the first code point in C<s>, are not examined.

The largest acceptable code point is the Unicode maximum 0x10FFFF.  This
differs from C<L</isSTRICT_UTF8_CHAR>> only in that it accepts non-character
code points.  This corresponds to
L<Unicode Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>.
which said that non-character code points are merely discouraged rather than
completely forbidden in open interchange.  See
L<perlunicode/Noncharacter code points>.

Use C<L</isUTF8_CHAR>> to check for Perl's extended UTF-8; and
C<L</isUTF8_CHAR_flags>> for a more customized definition.

Use C<L</is_c9strict_utf8_string>>, C<L</is_c9strict_utf8_string_loc>>, and
C<L</is_c9strict_utf8_string_loclen>> to check entire strings.

=cut

This uses an adaptation of the tables and algorithm given in
https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
documentation of the original version.  A copyright notice for the original
version is given at the beginning of this file.  The Perl adapation is
documented at the definition of PL_c9_utf8_dfa_tab[].

*/

PERL_STATIC_INLINE Size_t
Perl_isC9_STRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
{
    PERL_ARGS_ASSERT_ISC9_STRICT_UTF8_CHAR;

    PERL_IS_UTF8_CHAR_DFA(s0, e, PL_c9_utf8_dfa_tab,
                          DFA_RETURN_SUCCESS_,
                          DFA_RETURN_FAILURE_,
                          DFA_RETURN_FAILURE_);
}

/*

=for apidoc is_strict_utf8_string_loc

Like C<L</is_strict_utf8_string>> but stores the location of the failure (in the
case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer.

See also C<L</is_strict_utf8_string_loclen>>.

=cut
*/

#define is_strict_utf8_string_loc(s, len, ep)                               \
                                is_strict_utf8_string_loclen(s, len, ep, 0)

/*

=for apidoc is_strict_utf8_string_loclen

Like C<L</is_strict_utf8_string>> but stores the location of the failure (in the
case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer, and the number of UTF-8
encoded characters in the C<el> pointer.

See also C<L</is_strict_utf8_string_loc>>.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
{
    const U8 * first_variant;

    PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN;

    if (len == 0) {
        len = strlen((const char *) s);
    }

    if (is_utf8_invariant_string_loc(s, len, &first_variant)) {
        if (el)
            *el = len;

        if (ep) {
            *ep = s + len;
        }

        return TRUE;
    }

    {
        const U8* const send = s + len;
        const U8* x = first_variant;
        STRLEN outlen = first_variant - s;

        while (x < send) {
            const STRLEN cur_len = isSTRICT_UTF8_CHAR(x, send);
            if (UNLIKELY(! cur_len)) {
                break;
            }
            x += cur_len;
            outlen++;
        }

        if (el)
            *el = outlen;

        if (ep) {
            *ep = x;
        }

        return (x == send);
    }
}

/*

=for apidoc is_c9strict_utf8_string_loc

Like C<L</is_c9strict_utf8_string>> but stores the location of the failure (in
the case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer.

See also C<L</is_c9strict_utf8_string_loclen>>.

=cut
*/

#define is_c9strict_utf8_string_loc(s, len, ep)	                            \
                            is_c9strict_utf8_string_loclen(s, len, ep, 0)

/*

=for apidoc is_c9strict_utf8_string_loclen

Like C<L</is_c9strict_utf8_string>> but stores the location of the failure (in
the case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer, and the number of UTF-8 encoded
characters in the C<el> pointer.

See also C<L</is_c9strict_utf8_string_loc>>.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_c9strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
{
    const U8 * first_variant;

    PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN;

    if (len == 0) {
        len = strlen((const char *) s);
    }

    if (is_utf8_invariant_string_loc(s, len, &first_variant)) {
        if (el)
            *el = len;

        if (ep) {
            *ep = s + len;
        }

        return TRUE;
    }

    {
        const U8* const send = s + len;
        const U8* x = first_variant;
        STRLEN outlen = first_variant - s;

        while (x < send) {
            const STRLEN cur_len = isC9_STRICT_UTF8_CHAR(x, send);
            if (UNLIKELY(! cur_len)) {
                break;
            }
            x += cur_len;
            outlen++;
        }

        if (el)
            *el = outlen;

        if (ep) {
            *ep = x;
        }

        return (x == send);
    }
}

/*

=for apidoc is_utf8_string_loc_flags

Like C<L</is_utf8_string_flags>> but stores the location of the failure (in the
case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer.

See also C<L</is_utf8_string_loclen_flags>>.

=cut
*/

#define is_utf8_string_loc_flags(s, len, ep, flags)                         \
                        is_utf8_string_loclen_flags(s, len, ep, 0, flags)


/* The above 3 actual functions could have been moved into the more general one
 * just below, and made #defines that call it with the right 'flags'.  They are
 * currently kept separate to increase their chances of getting inlined */

/*

=for apidoc is_utf8_string_loclen_flags

Like C<L</is_utf8_string_flags>> but stores the location of the failure (in the
case of "utf8ness failure") or the location C<s>+C<len> (in the case of
"utf8ness success") in the C<ep> pointer, and the number of UTF-8
encoded characters in the C<el> pointer.

See also C<L</is_utf8_string_loc_flags>>.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_utf8_string_loclen_flags(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags)
{
    const U8 * first_variant;

    PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS;
    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
                          |UTF8_DISALLOW_PERL_EXTENDED)));

    if (len == 0) {
        len = strlen((const char *) s);
    }

    if (flags == 0) {
        return is_utf8_string_loclen(s, len, ep, el);
    }

    if ((flags & ~UTF8_DISALLOW_PERL_EXTENDED)
                                        == UTF8_DISALLOW_ILLEGAL_INTERCHANGE)
    {
        return is_strict_utf8_string_loclen(s, len, ep, el);
    }

    if ((flags & ~UTF8_DISALLOW_PERL_EXTENDED)
                                    == UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE)
    {
        return is_c9strict_utf8_string_loclen(s, len, ep, el);
    }

    if (is_utf8_invariant_string_loc(s, len, &first_variant)) {
        if (el)
            *el = len;

        if (ep) {
            *ep = s + len;
        }

        return TRUE;
    }

    {
        const U8* send = s + len;
        const U8* x = first_variant;
        STRLEN outlen = first_variant - s;

        while (x < send) {
            const STRLEN cur_len = isUTF8_CHAR_flags(x, send, flags);
            if (UNLIKELY(! cur_len)) {
                break;
            }
            x += cur_len;
            outlen++;
        }

        if (el)
            *el = outlen;

        if (ep) {
            *ep = x;
        }

        return (x == send);
    }
}

/*
=for apidoc utf8_distance

Returns the number of UTF-8 characters between the UTF-8 pointers C<a>
and C<b>.

WARNING: use only if you *know* that the pointers point inside the
same UTF-8 buffer.

=cut
*/

PERL_STATIC_INLINE IV
Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
{
    PERL_ARGS_ASSERT_UTF8_DISTANCE;

    return (a < b) ? -1 * (IV) utf8_length(a, b) : (IV) utf8_length(b, a);
}

/*
=for apidoc utf8_hop

Return the UTF-8 pointer C<s> displaced by C<off> characters, either
forward or backward.

WARNING: do not use the following unless you *know* C<off> is within
the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
on the first byte of character or just after the last byte of a character.

=cut
*/

PERL_STATIC_INLINE U8 *
Perl_utf8_hop(const U8 *s, SSize_t off)
{
    PERL_ARGS_ASSERT_UTF8_HOP;

    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
     * the bitops (especially ~) can create illegal UTF-8.
     * In other words: in Perl UTF-8 is not just for Unicode. */

    if (off >= 0) {
        while (off--)
            s += UTF8SKIP(s);
    }
    else {
        while (off++) {
            s--;
            while (UTF8_IS_CONTINUATION(*s))
                s--;
        }
    }
    GCC_DIAG_IGNORE(-Wcast-qual)
    return (U8 *)s;
    GCC_DIAG_RESTORE
}

/*
=for apidoc utf8_hop_forward

Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
forward.

C<off> must be non-negative.

C<s> must be before or equal to C<end>.

When moving forward it will not move beyond C<end>.

Will not exceed this limit even if the string is not valid "UTF-8".

=cut
*/

PERL_STATIC_INLINE U8 *
Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
{
    PERL_ARGS_ASSERT_UTF8_HOP_FORWARD;

    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
     * the bitops (especially ~) can create illegal UTF-8.
     * In other words: in Perl UTF-8 is not just for Unicode. */

    assert(s <= end);
    assert(off >= 0);

    while (off--) {
        STRLEN skip = UTF8SKIP(s);
        if ((STRLEN)(end - s) <= skip) {
            GCC_DIAG_IGNORE(-Wcast-qual)
            return (U8 *)end;
            GCC_DIAG_RESTORE
        }
        s += skip;
    }

    GCC_DIAG_IGNORE(-Wcast-qual)
    return (U8 *)s;
    GCC_DIAG_RESTORE
}

/*
=for apidoc utf8_hop_back

Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
backward.

C<off> must be non-positive.

C<s> must be after or equal to C<start>.

When moving backward it will not move before C<start>.

Will not exceed this limit even if the string is not valid "UTF-8".

=cut
*/

PERL_STATIC_INLINE U8 *
Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
{
    PERL_ARGS_ASSERT_UTF8_HOP_BACK;

    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
     * the bitops (especially ~) can create illegal UTF-8.
     * In other words: in Perl UTF-8 is not just for Unicode. */

    assert(start <= s);
    assert(off <= 0);

    while (off++ && s > start) {
        do {
            s--;
        } while (UTF8_IS_CONTINUATION(*s) && s > start);
    }

    GCC_DIAG_IGNORE(-Wcast-qual)
    return (U8 *)s;
    GCC_DIAG_RESTORE
}

/*
=for apidoc utf8_hop_safe

Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
either forward or backward.

When moving backward it will not move before C<start>.

When moving forward it will not move beyond C<end>.

Will not exceed those limits even if the string is not valid "UTF-8".

=cut
*/

PERL_STATIC_INLINE U8 *
Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
{
    PERL_ARGS_ASSERT_UTF8_HOP_SAFE;

    /* Note: cannot use UTF8_IS_...() too eagerly here since e.g
     * the bitops (especially ~) can create illegal UTF-8.
     * In other words: in Perl UTF-8 is not just for Unicode. */

    assert(start <= s && s <= end);

    if (off >= 0) {
        return utf8_hop_forward(s, off, end);
    }
    else {
        return utf8_hop_back(s, off, start);
    }
}

/*

=for apidoc isUTF8_CHAR_flags

Evaluates to non-zero if the first few bytes of the string starting at C<s> and
looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
that represents some code point, subject to the restrictions given by C<flags>;
otherwise it evaluates to 0.  If non-zero, the value gives how many bytes
starting at C<s> comprise the code point's representation.  Any bytes remaining
before C<e>, but beyond the ones needed to form the first code point in C<s>,
are not examined.

If C<flags> is 0, this gives the same results as C<L</isUTF8_CHAR>>;
if C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results
as C<L</isSTRICT_UTF8_CHAR>>;
and if C<flags> is C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives
the same results as C<L</isC9_STRICT_UTF8_CHAR>>.
Otherwise C<flags> may be any combination of the C<UTF8_DISALLOW_I<foo>> flags
understood by C<L</utf8n_to_uvchr>>, with the same meanings.

The three alternative macros are for the most commonly needed validations; they
are likely to run somewhat faster than this more general one, as they can be
inlined into your code.

Use L</is_utf8_string_flags>, L</is_utf8_string_loc_flags>, and
L</is_utf8_string_loclen_flags> to check entire strings.

=cut
*/

PERL_STATIC_INLINE STRLEN
Perl_isUTF8_CHAR_flags(const U8 * const s0, const U8 * const e, const U32 flags)
{
    PERL_ARGS_ASSERT_ISUTF8_CHAR_FLAGS;
    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
                          |UTF8_DISALLOW_PERL_EXTENDED)));

    PERL_IS_UTF8_CHAR_DFA(s0, e, PL_extended_utf8_dfa_tab,
                          goto check_success,
                          DFA_TEASE_APART_FF_,
                          DFA_RETURN_FAILURE_);

  check_success:

    return is_utf8_char_helper_(s0, e, flags);

#ifdef HAS_EXTRA_LONG_UTF8

  tease_apart_FF:

    /* In the case of PL_extended_utf8_dfa_tab, getting here means the input is
     * either malformed, or was for the largest possible start byte, which
     * indicates perl extended UTF-8, well above the Unicode maximum */
    if (   *s0 != I8_TO_NATIVE_UTF8(0xFF)
        || (flags & (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_PERL_EXTENDED)))
    {
        return 0;
    }

    /* Otherwise examine the sequence not inline */
    return is_utf8_FF_helper_(s0, e,
                              FALSE /* require full, not partial char */
                             );
#endif

}

/*

=for apidoc is_utf8_valid_partial_char

Returns 0 if the sequence of bytes starting at C<s> and looking no further than
S<C<e - 1>> is the UTF-8 encoding, as extended by Perl, for one or more code
points.  Otherwise, it returns 1 if there exists at least one non-empty
sequence of bytes that when appended to sequence C<s>, starting at position
C<e> causes the entire sequence to be the well-formed UTF-8 of some code point;
otherwise returns 0.

In other words this returns TRUE if C<s> points to a partial UTF-8-encoded code
point.

This is useful when a fixed-length buffer is being tested for being well-formed
UTF-8, but the final few bytes in it don't comprise a full character; that is,
it is split somewhere in the middle of the final code point's UTF-8
representation.  (Presumably when the buffer is refreshed with the next chunk
of data, the new first bytes will complete the partial code point.)   This
function is used to verify that the final bytes in the current buffer are in
fact the legal beginning of some code point, so that if they aren't, the
failure can be signalled without having to wait for the next read.

=cut
*/
#define is_utf8_valid_partial_char(s, e)                                    \
                                is_utf8_valid_partial_char_flags(s, e, 0)

/*

=for apidoc is_utf8_valid_partial_char_flags

Like C<L</is_utf8_valid_partial_char>>, it returns a boolean giving whether
or not the input is a valid UTF-8 encoded partial character, but it takes an
extra parameter, C<flags>, which can further restrict which code points are
considered valid.

If C<flags> is 0, this behaves identically to
C<L</is_utf8_valid_partial_char>>.  Otherwise C<flags> can be any combination
of the C<UTF8_DISALLOW_I<foo>> flags accepted by C<L</utf8n_to_uvchr>>.  If
there is any sequence of bytes that can complete the input partial character in
such a way that a non-prohibited character is formed, the function returns
TRUE; otherwise FALSE.  Non character code points cannot be determined based on
partial character input.  But many  of the other possible excluded types can be
determined from just the first one or two bytes.

=cut
 */

PERL_STATIC_INLINE bool
Perl_is_utf8_valid_partial_char_flags(const U8 * const s0, const U8 * const e, const U32 flags)
{
    PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS;
    assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
                          |UTF8_DISALLOW_PERL_EXTENDED)));

    PERL_IS_UTF8_CHAR_DFA(s0, e, PL_extended_utf8_dfa_tab,
                          DFA_RETURN_FAILURE_,
                          DFA_TEASE_APART_FF_,
                          NOOP);

    /* The NOOP above causes the DFA to drop down here iff the input was a
     * partial character.  flags=0 => can return TRUE immediately; otherwise we
     * need to check (not inline) if the partial character is the beginning of
     * a disallowed one */
    if (flags == 0) {
        return TRUE;
    }

    return cBOOL(is_utf8_char_helper_(s0, e, flags));

#ifdef HAS_EXTRA_LONG_UTF8

  tease_apart_FF:

    /* Getting here means the input is either malformed, or, in the case of
     * PL_extended_utf8_dfa_tab, was for the largest possible start byte.  The
     * latter case has to be extended UTF-8, so can fail immediately if that is
     * forbidden */

    if (   *s0 != I8_TO_NATIVE_UTF8(0xFF)
        || (flags & (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_PERL_EXTENDED)))
    {
        return 0;
    }

    return is_utf8_FF_helper_(s0, e,
                              TRUE /* Require to be a partial character */
                             );
#endif

}

/*

=for apidoc is_utf8_fixed_width_buf_flags

Returns TRUE if the fixed-width buffer starting at C<s> with length C<len>
is entirely valid UTF-8, subject to the restrictions given by C<flags>;
otherwise it returns FALSE.

If C<flags> is 0, any well-formed UTF-8, as extended by Perl, is accepted
without restriction.  If the final few bytes of the buffer do not form a
complete code point, this will return TRUE anyway, provided that
C<L</is_utf8_valid_partial_char_flags>> returns TRUE for them.

If C<flags> in non-zero, it can be any combination of the
C<UTF8_DISALLOW_I<foo>> flags accepted by C<L</utf8n_to_uvchr>>, and with the
same meanings.

This function differs from C<L</is_utf8_string_flags>> only in that the latter
returns FALSE if the final few bytes of the string don't form a complete code
point.

=cut
 */
#define is_utf8_fixed_width_buf_flags(s, len, flags)                        \
                is_utf8_fixed_width_buf_loclen_flags(s, len, 0, 0, flags)

/*

=for apidoc is_utf8_fixed_width_buf_loc_flags

Like C<L</is_utf8_fixed_width_buf_flags>> but stores the location of the
failure in the C<ep> pointer.  If the function returns TRUE, C<*ep> will point
to the beginning of any partial character at the end of the buffer; if there is
no partial character C<*ep> will contain C<s>+C<len>.

See also C<L</is_utf8_fixed_width_buf_loclen_flags>>.

=cut
*/

#define is_utf8_fixed_width_buf_loc_flags(s, len, loc, flags)               \
                is_utf8_fixed_width_buf_loclen_flags(s, len, loc, 0, flags)

/*

=for apidoc is_utf8_fixed_width_buf_loclen_flags

Like C<L</is_utf8_fixed_width_buf_loc_flags>> but stores the number of
complete, valid characters found in the C<el> pointer.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s,
                                       STRLEN len,
                                       const U8 **ep,
                                       STRLEN *el,
                                       const U32 flags)
{
    const U8 * maybe_partial;

    PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS;

    if (! ep) {
        ep  = &maybe_partial;
    }

    /* If it's entirely valid, return that; otherwise see if the only error is
     * that the final few bytes are for a partial character */
    return    is_utf8_string_loclen_flags(s, len, ep, el, flags)
           || is_utf8_valid_partial_char_flags(*ep, s + len, flags);
}

PERL_STATIC_INLINE UV
Perl_utf8n_to_uvchr_msgs(const U8 *s,
                      STRLEN curlen,
                      STRLEN *retlen,
                      const U32 flags,
                      U32 * errors,
                      AV ** msgs)
{
    /* This is the inlined portion of utf8n_to_uvchr_msgs.  It handles the
     * simple cases, and, if necessary calls a helper function to deal with the
     * more complex ones.  Almost all well-formed non-problematic code points
     * are considered simple, so that it's unlikely that the helper function
     * will need to be called.
     *
     * This is an adaptation of the tables and algorithm given in
     * https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides
     * comprehensive documentation of the original version.  A copyright notice
     * for the original version is given at the beginning of this file.  The
     * Perl adapation is documented at the definition of PL_strict_utf8_dfa_tab[].
     */

    const U8 * const s0 = s;
    const U8 * send = s0 + curlen;
    UV type;
    UV uv;

    PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_MSGS;

    /* This dfa is fast.  If it accepts the input, it was for a well-formed,
     * non-problematic code point, which can be returned immediately.
     * Otherwise we call a helper function to figure out the more complicated
     * cases. */

    /* No calls from core pass in an empty string; non-core need a check */
#ifdef PERL_CORE
    assert(curlen > 0);
#else
    if (curlen == 0) return _utf8n_to_uvchr_msgs_helper(s0, 0, retlen,
                                                        flags, errors, msgs);
#endif

    type = PL_strict_utf8_dfa_tab[*s];

    /* The table is structured so that 'type' is 0 iff the input byte is
     * represented identically regardless of the UTF-8ness of the string */
    if (type == 0) {   /* UTF-8 invariants are returned unchanged */
        uv = *s;
    }
    else {
        UV state = PL_strict_utf8_dfa_tab[256 + type];
        uv = (0xff >> type) & NATIVE_UTF8_TO_I8(*s);

        while (++s < send) {
            type  = PL_strict_utf8_dfa_tab[*s];
            state = PL_strict_utf8_dfa_tab[256 + state + type];

            uv = UTF8_ACCUMULATE(uv, *s);

            if (state == 0) {
#ifdef EBCDIC
                uv = UNI_TO_NATIVE(uv);
#endif
                goto success;
            }

            if (UNLIKELY(state == 1)) {
                break;
            }
        }

        /* Here is potentially problematic.  Use the full mechanism */
        return _utf8n_to_uvchr_msgs_helper(s0, curlen, retlen, flags,
                                           errors, msgs);
    }

  success:
    if (retlen) {
        *retlen = s - s0 + 1;
    }
    if (errors) {
        *errors = 0;
    }
    if (msgs) {
        *msgs = NULL;
    }

    return uv;
}

PERL_STATIC_INLINE UV
Perl_utf8_to_uvchr_buf_helper(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
{
    PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF_HELPER;

    assert(s < send);

    if (! ckWARN_d(WARN_UTF8)) {

        /* EMPTY is not really allowed, and asserts on debugging builds.  But
         * on non-debugging we have to deal with it, and this causes it to
         * return the REPLACEMENT CHARACTER, as the documentation indicates */
        return utf8n_to_uvchr(s, send - s, retlen,
                              (UTF8_ALLOW_ANY | UTF8_ALLOW_EMPTY));
    }
    else {
        UV ret = utf8n_to_uvchr(s, send - s, retlen, 0);
        if (retlen && ret == 0 && (send <= s || *s != '\0')) {
            *retlen = (STRLEN) -1;
        }

        return ret;
    }
}

/* ------------------------------- perl.h ----------------------------- */

/*
=for apidoc_section $utility

=for apidoc is_safe_syscall

Test that the given C<pv> (with length C<len>) doesn't contain any internal
C<NUL> characters.
If it does, set C<errno> to C<ENOENT>, optionally warn using the C<syscalls>
category, and return FALSE.

Return TRUE if the name is safe.

C<what> and C<op_name> are used in any warning.

Used by the C<IS_SAFE_SYSCALL()> macro.

=cut
*/

PERL_STATIC_INLINE bool
Perl_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
{
    /* While the Windows CE API provides only UCS-16 (or UTF-16) APIs
     * perl itself uses xce*() functions which accept 8-bit strings.
     */

    PERL_ARGS_ASSERT_IS_SAFE_SYSCALL;

    if (len > 1) {
        char *null_at;
        if (UNLIKELY((null_at = (char *)memchr(pv, 0, len-1)) != NULL)) {
                SETERRNO(ENOENT, LIB_INVARG);
                Perl_ck_warner(aTHX_ packWARN(WARN_SYSCALLS),
                                   "Invalid \\0 character in %s for %s: %s\\0%s",
                                   what, op_name, pv, null_at+1);
                return FALSE;
        }
    }

    return TRUE;
}

/*

Return true if the supplied filename has a newline character
immediately before the first (hopefully only) NUL.

My original look at this incorrectly used the len from SvPV(), but
that's incorrect, since we allow for a NUL in pv[len-1].

So instead, strlen() and work from there.

This allow for the user reading a filename, forgetting to chomp it,
then calling:

  open my $foo, "$file\0";

*/

#ifdef PERL_CORE

PERL_STATIC_INLINE bool
S_should_warn_nl(const char *pv)
{
    STRLEN len;

    PERL_ARGS_ASSERT_SHOULD_WARN_NL;

    len = strlen(pv);

    return len > 0 && pv[len-1] == '\n';
}

#endif

#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)

PERL_STATIC_INLINE bool
S_lossless_NV_to_IV(const NV nv, IV *ivp)
{
    /* This function determines if the input NV 'nv' may be converted without
     * loss of data to an IV.  If not, it returns FALSE taking no other action.
     * But if it is possible, it does the conversion, returning TRUE, and
     * storing the converted result in '*ivp' */

    PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV;

#  if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
    /* Normally any comparison with a NaN returns false; if we can't rely
     * on that behaviour, check explicitly */
    if (UNLIKELY(Perl_isnan(nv))) {
        return FALSE;
    }
#  endif

    /* Written this way so that with an always-false NaN comparison we
     * return false */
    if (!(LIKELY(nv >= (NV) IV_MIN) && LIKELY(nv < IV_MAX_P1))) {
        return FALSE;
    }

    if ((IV) nv != nv) {
        return FALSE;
    }

    *ivp = (IV) nv;
    return TRUE;
}

#endif

/* ------------------ pp.c, regcomp.c, toke.c, universal.c ------------ */

#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)

#define MAX_CHARSET_NAME_LENGTH 2

PERL_STATIC_INLINE const char *
S_get_regex_charset_name(const U32 flags, STRLEN* const lenp)
{
    PERL_ARGS_ASSERT_GET_REGEX_CHARSET_NAME;

    /* Returns a string that corresponds to the name of the regex character set
     * given by 'flags', and *lenp is set the length of that string, which
     * cannot exceed MAX_CHARSET_NAME_LENGTH characters */

    *lenp = 1;
    switch (get_regex_charset(flags)) {
        case REGEX_DEPENDS_CHARSET: return DEPENDS_PAT_MODS;
        case REGEX_LOCALE_CHARSET:  return LOCALE_PAT_MODS;
        case REGEX_UNICODE_CHARSET: return UNICODE_PAT_MODS;
        case REGEX_ASCII_RESTRICTED_CHARSET: return ASCII_RESTRICT_PAT_MODS;
        case REGEX_ASCII_MORE_RESTRICTED_CHARSET:
            *lenp = 2;
            return ASCII_MORE_RESTRICT_PAT_MODS;
    }
    /* The NOT_REACHED; hides an assert() which has a rather complex
     * definition in perl.h. */
    NOT_REACHED; /* NOTREACHED */
    return "?";	    /* Unknown */
}

#endif

/*

Return false if any get magic is on the SV other than taint magic.

*/

PERL_STATIC_INLINE bool
Perl_sv_only_taint_gmagic(SV *sv)
{
    MAGIC *mg = SvMAGIC(sv);

    PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC;

    while (mg) {
        if (mg->mg_type != PERL_MAGIC_taint
            && !(mg->mg_flags & MGf_GSKIP)
            && mg->mg_virtual->svt_get) {
            return FALSE;
        }
        mg = mg->mg_moremagic;
    }

    return TRUE;
}

/* ------------------ cop.h ------------------------------------------- */

/* implement GIMME_V() macro */

PERL_STATIC_INLINE U8
Perl_gimme_V(pTHX)
{
    I32 cxix;
    U8  gimme = (PL_op->op_flags & OPf_WANT);

    if (gimme)
        return gimme;
    cxix = PL_curstackinfo->si_cxsubix;
    if (cxix < 0)
        return PL_curstackinfo->si_type == PERLSI_SORT ? G_SCALAR: G_VOID;
    assert(cxstack[cxix].blk_gimme & G_WANT);
    return (cxstack[cxix].blk_gimme & G_WANT);
}


/* Enter a block. Push a new base context and return its address. */

PERL_STATIC_INLINE PERL_CONTEXT *
Perl_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix)
{
    PERL_CONTEXT * cx;

    PERL_ARGS_ASSERT_CX_PUSHBLOCK;

    CXINC;
    cx = CX_CUR();
    cx->cx_type        = type;
    cx->blk_gimme      = gimme;
    cx->blk_oldsaveix  = saveix;
    cx->blk_oldsp      = (I32)(sp - PL_stack_base);
    cx->blk_oldcop     = PL_curcop;
    cx->blk_oldmarksp  = (I32)(PL_markstack_ptr - PL_markstack);
    cx->blk_oldscopesp = PL_scopestack_ix;
    cx->blk_oldpm      = PL_curpm;
    cx->blk_old_tmpsfloor = PL_tmps_floor;

    PL_tmps_floor        = PL_tmps_ix;
    CX_DEBUG(cx, "PUSH");
    return cx;
}


/* Exit a block (RETURN and LAST). */

PERL_STATIC_INLINE void
Perl_cx_popblock(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_POPBLOCK;

    CX_DEBUG(cx, "POP");
    /* these 3 are common to cx_popblock and cx_topblock */
    PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp;
    PL_scopestack_ix = cx->blk_oldscopesp;
    PL_curpm         = cx->blk_oldpm;

    /* LEAVE_SCOPE() should have made this true. /(?{})/ cheats
     * and leaves a CX entry lying around for repeated use, so
     * skip for multicall */                  \
    assert(   (CxTYPE(cx) == CXt_SUB && CxMULTICALL(cx))
            || PL_savestack_ix == cx->blk_oldsaveix);
    PL_curcop     = cx->blk_oldcop;
    PL_tmps_floor = cx->blk_old_tmpsfloor;
}

/* Continue a block elsewhere (e.g. NEXT, REDO, GOTO).
 * Whereas cx_popblock() restores the state to the point just before
 * cx_pushblock() was called,  cx_topblock() restores it to the point just
 * *after* cx_pushblock() was called. */

PERL_STATIC_INLINE void
Perl_cx_topblock(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_TOPBLOCK;

    CX_DEBUG(cx, "TOP");
    /* these 3 are common to cx_popblock and cx_topblock */
    PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp;
    PL_scopestack_ix = cx->blk_oldscopesp;
    PL_curpm         = cx->blk_oldpm;

    PL_stack_sp      = PL_stack_base + cx->blk_oldsp;
}


PERL_STATIC_INLINE void
Perl_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs)
{
    U8 phlags = CX_PUSHSUB_GET_LVALUE_MASK(Perl_was_lvalue_sub);

    PERL_ARGS_ASSERT_CX_PUSHSUB;

    PERL_DTRACE_PROBE_ENTRY(cv);
    cx->blk_sub.old_cxsubix     = PL_curstackinfo->si_cxsubix;
    PL_curstackinfo->si_cxsubix = cx - PL_curstackinfo->si_cxstack;
    cx->blk_sub.cv = cv;
    cx->blk_sub.olddepth = CvDEPTH(cv);
    cx->blk_sub.prevcomppad = PL_comppad;
    cx->cx_type |= (hasargs) ? CXp_HASARGS : 0;
    cx->blk_sub.retop = retop;
    SvREFCNT_inc_simple_void_NN(cv);
    cx->blk_u16 = PL_op->op_private & (phlags|OPpDEREF);
}


/* subsets of cx_popsub() */

PERL_STATIC_INLINE void
Perl_cx_popsub_common(pTHX_ PERL_CONTEXT *cx)
{
    CV *cv;

    PERL_ARGS_ASSERT_CX_POPSUB_COMMON;
    assert(CxTYPE(cx) == CXt_SUB);

    PL_comppad = cx->blk_sub.prevcomppad;
    PL_curpad = LIKELY(PL_comppad) ? AvARRAY(PL_comppad) : NULL;
    cv = cx->blk_sub.cv;
    CvDEPTH(cv) = cx->blk_sub.olddepth;
    cx->blk_sub.cv = NULL;
    SvREFCNT_dec(cv);
    PL_curstackinfo->si_cxsubix = cx->blk_sub.old_cxsubix;
}


/* handle the @_ part of leaving a sub */

PERL_STATIC_INLINE void
Perl_cx_popsub_args(pTHX_ PERL_CONTEXT *cx)
{
    AV *av;

    PERL_ARGS_ASSERT_CX_POPSUB_ARGS;
    assert(CxTYPE(cx) == CXt_SUB);
    assert(AvARRAY(MUTABLE_AV(
        PadlistARRAY(CvPADLIST(cx->blk_sub.cv))[
                CvDEPTH(cx->blk_sub.cv)])) == PL_curpad);

    CX_POP_SAVEARRAY(cx);
    av = MUTABLE_AV(PAD_SVl(0));
    if (UNLIKELY(AvREAL(av)))
        /* abandon @_ if it got reified */
        clear_defarray(av, 0);
    else {
        CLEAR_ARGARRAY(av);
    }
}


PERL_STATIC_INLINE void
Perl_cx_popsub(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_POPSUB;
    assert(CxTYPE(cx) == CXt_SUB);

    PERL_DTRACE_PROBE_RETURN(cx->blk_sub.cv);

    if (CxHASARGS(cx))
        cx_popsub_args(cx);
    cx_popsub_common(cx);
}


PERL_STATIC_INLINE void
Perl_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv)
{
    PERL_ARGS_ASSERT_CX_PUSHFORMAT;

    cx->blk_format.old_cxsubix = PL_curstackinfo->si_cxsubix;
    PL_curstackinfo->si_cxsubix= cx - PL_curstackinfo->si_cxstack;
    cx->blk_format.cv          = cv;
    cx->blk_format.retop       = retop;
    cx->blk_format.gv          = gv;
    cx->blk_format.dfoutgv     = PL_defoutgv;
    cx->blk_format.prevcomppad = PL_comppad;
    cx->blk_u16                = 0;

    SvREFCNT_inc_simple_void_NN(cv);
    CvDEPTH(cv)++;
    SvREFCNT_inc_void(cx->blk_format.dfoutgv);
}


PERL_STATIC_INLINE void
Perl_cx_popformat(pTHX_ PERL_CONTEXT *cx)
{
    CV *cv;
    GV *dfout;

    PERL_ARGS_ASSERT_CX_POPFORMAT;
    assert(CxTYPE(cx) == CXt_FORMAT);

    dfout = cx->blk_format.dfoutgv;
    setdefout(dfout);
    cx->blk_format.dfoutgv = NULL;
    SvREFCNT_dec_NN(dfout);

    PL_comppad = cx->blk_format.prevcomppad;
    PL_curpad = LIKELY(PL_comppad) ? AvARRAY(PL_comppad) : NULL;
    cv = cx->blk_format.cv;
    cx->blk_format.cv = NULL;
    --CvDEPTH(cv);
    SvREFCNT_dec_NN(cv);
    PL_curstackinfo->si_cxsubix = cx->blk_format.old_cxsubix;
}


PERL_STATIC_INLINE void
Perl_push_evalortry_common(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv)
{
    cx->blk_eval.retop         = retop;
    cx->blk_eval.old_namesv    = namesv;
    cx->blk_eval.old_eval_root = PL_eval_root;
    cx->blk_eval.cur_text      = PL_parser ? PL_parser->linestr : NULL;
    cx->blk_eval.cv            = NULL; /* later set by doeval_compile() */
    cx->blk_eval.cur_top_env   = PL_top_env;

    assert(!(PL_in_eval     & ~ 0x3F));
    assert(!(PL_op->op_type & ~0x1FF));
    cx->blk_u16 = (PL_in_eval & 0x3F) | ((U16)PL_op->op_type << 7);
}

PERL_STATIC_INLINE void
Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv)
{
    PERL_ARGS_ASSERT_CX_PUSHEVAL;

    Perl_push_evalortry_common(aTHX_ cx, retop, namesv);

    cx->blk_eval.old_cxsubix    = PL_curstackinfo->si_cxsubix;
    PL_curstackinfo->si_cxsubix = cx - PL_curstackinfo->si_cxstack;
}

PERL_STATIC_INLINE void
Perl_cx_pushtry(pTHX_ PERL_CONTEXT *cx, OP *retop)
{
    PERL_ARGS_ASSERT_CX_PUSHTRY;

    Perl_push_evalortry_common(aTHX_ cx, retop, NULL);

    /* Don't actually change it, just store the current value so it's restored
     * by the common popeval */
    cx->blk_eval.old_cxsubix = PL_curstackinfo->si_cxsubix;
}


PERL_STATIC_INLINE void
Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx)
{
    SV *sv;

    PERL_ARGS_ASSERT_CX_POPEVAL;
    assert(CxTYPE(cx) == CXt_EVAL);

    PL_in_eval = CxOLD_IN_EVAL(cx);
    assert(!(PL_in_eval & 0xc0));
    PL_eval_root = cx->blk_eval.old_eval_root;
    sv = cx->blk_eval.cur_text;
    if (sv && CxEVAL_TXT_REFCNTED(cx)) {
        cx->blk_eval.cur_text = NULL;
        SvREFCNT_dec_NN(sv);
    }

    sv = cx->blk_eval.old_namesv;
    if (sv) {
        cx->blk_eval.old_namesv = NULL;
        SvREFCNT_dec_NN(sv);
    }
    PL_curstackinfo->si_cxsubix = cx->blk_eval.old_cxsubix;
}


/* push a plain loop, i.e.
 *     { block }
 *     while (cond) { block }
 *     for (init;cond;continue) { block }
 * This loop can be last/redo'ed etc.
 */

PERL_STATIC_INLINE void
Perl_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN;
    cx->blk_loop.my_op = cLOOP;
}


/* push a true for loop, i.e.
 *     for var (list) { block }
 */

PERL_STATIC_INLINE void
Perl_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV* itersave)
{
    PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR;

    /* this one line is common with cx_pushloop_plain */
    cx->blk_loop.my_op = cLOOP;

    cx->blk_loop.itervar_u.svp = (SV**)itervarp;
    cx->blk_loop.itersave      = itersave;
#ifdef USE_ITHREADS
    cx->blk_loop.oldcomppad = PL_comppad;
#endif
}


/* pop all loop types, including plain */

PERL_STATIC_INLINE void
Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_POPLOOP;

    assert(CxTYPE_is_LOOP(cx));
    if (  CxTYPE(cx) == CXt_LOOP_ARY
       || CxTYPE(cx) == CXt_LOOP_LAZYSV)
    {
        /* Free ary or cur. This assumes that state_u.ary.ary
         * aligns with state_u.lazysv.cur. See cx_dup() */
        SV *sv = cx->blk_loop.state_u.lazysv.cur;
        cx->blk_loop.state_u.lazysv.cur = NULL;
        SvREFCNT_dec_NN(sv);
        if (CxTYPE(cx) == CXt_LOOP_LAZYSV) {
            sv = cx->blk_loop.state_u.lazysv.end;
            cx->blk_loop.state_u.lazysv.end = NULL;
            SvREFCNT_dec_NN(sv);
        }
    }
    if (cx->cx_type & (CXp_FOR_PAD|CXp_FOR_GV)) {
        SV *cursv;
        SV **svp = (cx)->blk_loop.itervar_u.svp;
        if ((cx->cx_type & CXp_FOR_GV))
            svp = &GvSV((GV*)svp);
        cursv = *svp;
        *svp = cx->blk_loop.itersave;
        cx->blk_loop.itersave = NULL;
        SvREFCNT_dec(cursv);
    }
}


PERL_STATIC_INLINE void
Perl_cx_pushwhen(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_PUSHWHEN;

    cx->blk_givwhen.leave_op = cLOGOP->op_other;
}


PERL_STATIC_INLINE void
Perl_cx_popwhen(pTHX_ PERL_CONTEXT *cx)
{
    PERL_ARGS_ASSERT_CX_POPWHEN;
    assert(CxTYPE(cx) == CXt_WHEN);

    PERL_UNUSED_ARG(cx);
    PERL_UNUSED_CONTEXT;
    /* currently NOOP */
}


PERL_STATIC_INLINE void
Perl_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv)
{
    PERL_ARGS_ASSERT_CX_PUSHGIVEN;

    cx->blk_givwhen.leave_op = cLOGOP->op_other;
    cx->blk_givwhen.defsv_save = orig_defsv;
}


PERL_STATIC_INLINE void
Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx)
{
    SV *sv;

    PERL_ARGS_ASSERT_CX_POPGIVEN;
    assert(CxTYPE(cx) == CXt_GIVEN);

    sv = GvSV(PL_defgv);
    GvSV(PL_defgv) = cx->blk_givwhen.defsv_save;
    cx->blk_givwhen.defsv_save = NULL;
    SvREFCNT_dec(sv);
}

/* ------------------ util.h ------------------------------------------- */

/*
=for apidoc_section $string

=for apidoc foldEQ

Returns true if the leading C<len> bytes of the strings C<s1> and C<s2> are the
same
case-insensitively; false otherwise.  Uppercase and lowercase ASCII range bytes
match themselves and their opposite case counterparts.  Non-cased and non-ASCII
range bytes match only themselves.

=cut
*/

PERL_STATIC_INLINE I32
Perl_foldEQ(const char *s1, const char *s2, I32 len)
{
    const U8 *a = (const U8 *)s1;
    const U8 *b = (const U8 *)s2;

    PERL_ARGS_ASSERT_FOLDEQ;

    assert(len >= 0);

    while (len--) {
        if (*a != *b && *a != PL_fold[*b])
            return 0;
        a++,b++;
    }
    return 1;
}

PERL_STATIC_INLINE I32
Perl_foldEQ_latin1(const char *s1, const char *s2, I32 len)
{
    /* Compare non-UTF-8 using Unicode (Latin1) semantics.  Works on all folds
     * representable without UTF-8, except for LATIN_SMALL_LETTER_SHARP_S, and
     * does not check for this.  Nor does it check that the strings each have
     * at least 'len' characters. */

    const U8 *a = (const U8 *)s1;
    const U8 *b = (const U8 *)s2;

    PERL_ARGS_ASSERT_FOLDEQ_LATIN1;

    assert(len >= 0);

    while (len--) {
        if (*a != *b && *a != PL_fold_latin1[*b]) {
            return 0;
        }
        a++, b++;
    }
    return 1;
}

/*
=for apidoc_section $locale
=for apidoc foldEQ_locale

Returns true if the leading C<len> bytes of the strings C<s1> and C<s2> are the
same case-insensitively in the current locale; false otherwise.

=cut
*/

PERL_STATIC_INLINE I32
Perl_foldEQ_locale(const char *s1, const char *s2, I32 len)
{
    const U8 *a = (const U8 *)s1;
    const U8 *b = (const U8 *)s2;

    PERL_ARGS_ASSERT_FOLDEQ_LOCALE;

    assert(len >= 0);

    while (len--) {
        if (*a != *b && *a != PL_fold_locale[*b])
            return 0;
        a++,b++;
    }
    return 1;
}

/*
=for apidoc_section $string
=for apidoc my_strnlen

The C library C<strnlen> if available, or a Perl implementation of it.

C<my_strnlen()> computes the length of the string, up to C<maxlen>
characters.  It will never attempt to address more than C<maxlen>
characters, making it suitable for use with strings that are not
guaranteed to be NUL-terminated.

=cut

Description stolen from http://man.openbsd.org/strnlen.3,
implementation stolen from PostgreSQL.
*/
#ifndef HAS_STRNLEN

PERL_STATIC_INLINE Size_t
Perl_my_strnlen(const char *str, Size_t maxlen)
{
    const char *end = (char *) memchr(str, '\0', maxlen);

    PERL_ARGS_ASSERT_MY_STRNLEN;

    if (end == NULL) return maxlen;
    return end - str;
}

#endif

#if ! defined (HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))

PERL_STATIC_INLINE void *
S_my_memrchr(const char * s, const char c, const STRLEN len)
{
    /* memrchr(), since many platforms lack it */

    const char * t = s + len - 1;

    PERL_ARGS_ASSERT_MY_MEMRCHR;

    while (t >= s) {
        if (*t == c) {
            return (void *) t;
        }
        t--;
    }

    return NULL;
}

#endif

PERL_STATIC_INLINE char *
Perl_mortal_getenv(const char * str)
{
    /* This implements a (mostly) thread-safe, sequential-call-safe getenv().
     *
     * It's (mostly) thread-safe because it uses a mutex to prevent other
     * threads (that look at this mutex) from destroying the result before this
     * routine has a chance to copy the result to a place that won't be
     * destroyed before the caller gets a chance to handle it.  That place is a
     * mortal SV.  khw chose this over SAVEFREEPV because he is under the
     * impression that the SV will hang around longer under more circumstances
     *
     * The reason it isn't completely thread-safe is that other code could
     * simply not pay attention to the mutex.  All of the Perl core uses the
     * mutex, but it is possible for code from, say XS, to not use this mutex,
     * defeating the safety.
     *
     * getenv() returns, in some implementations, a pointer to a spot in the
     * **environ array, which could be invalidated at any time by this or
     * another thread changing the environment.  Other implementations copy the
     * **environ value to a static buffer, returning a pointer to that.  That
     * buffer might or might not be invalidated by a getenv() call in another
     * thread.  If it does get zapped, we need an exclusive lock.  Otherwise,
     * many getenv() calls can safely be running simultaneously, so a
     * many-reader (but no simultaneous writers) lock is ok.  There is a
     * Configure probe to see if another thread destroys the buffer, and the
     * mutex is defined accordingly.
     *
     * But in all cases, using the mutex prevents these problems, as long as
     * all code uses the same mutex.
     *
     * A complication is that this can be called during phases where the
     * mortalization process isn't available.  These are in interpreter
     * destruction or early in construction.  khw believes that at these times
     * there shouldn't be anything else going on, so plain getenv is safe AS
     * LONG AS the caller acts on the return before calling it again. */

    char * ret;
    dTHX;

    PERL_ARGS_ASSERT_MORTAL_GETENV;

    /* Can't mortalize without stacks.  khw believes that no other threads
     * should be running, so no need to lock things, and this may be during a
     * phase when locking isn't even available */
    if (UNLIKELY(PL_scopestack_ix == 0)) {
        return getenv(str);
    }

#ifdef PERL_MEM_LOG

    /* A major complication arises under PERL_MEM_LOG.  When that is active,
     * every memory allocation may result in logging, depending on the value of
     * ENV{PERL_MEM_LOG} at the moment.  That means, as we create the SV for
     * saving ENV{foo}'s value (but before saving it), the logging code will
     * call us recursively to find out what ENV{PERL_MEM_LOG} is.  Without some
     * care that could lead to: 1) infinite recursion; or 2) deadlock (trying to
     * lock a boolean mutex recursively); 3) destroying the getenv() static
     * buffer; or 4) destroying the temporary created by this for the copy
     * causes a log entry to be made which could cause a new temporary to be
     * created, which will need to be destroyed at some point, leading to an
     * infinite loop.
     *
     * The solution adopted here (after some gnashing of teeth) is to detect
     * the recursive calls and calls from the logger, and treat them specially.
     * Let's say we want to do getenv("foo").  We first find
     * getenv(PERL_MEM_LOG) and save it to a fixed-length per-interpreter
     * variable, so no temporary is required.  Then we do getenv(foo}, and in
     * the process of creating a temporary to save it, this function will be
     * called recursively to do a getenv(PERL_MEM_LOG).  On the recursed call,
     * we detect that it is such a call and return our saved value instead of
     * locking and doing a new getenv().  This solves all of problems 1), 2),
     * and 3).  Because all the getenv()s are done while the mutex is locked,
     * the state cannot have changed.  To solve 4), we don't create a temporary
     * when this is called from the logging code.  That code disposes of the
     * return value while the mutex is still locked.
     *
     * The value of getenv(PERL_MEM_LOG) can be anything, but only initial
     * digits and 3 particular letters are significant; the rest are ignored by
     * the memory logging code.  Thus the per-interpreter variable only needs
     * to be large enough to save the significant information, the size of
     * which is known at compile time.  The first byte is extra, reserved for
     * flags for our use.  To protect against overflowing, only the reserved
     * byte, as many digits as don't overflow, and the three letters are
     * stored.
     *
     * The reserved byte has two bits:
     *      0x1 if set indicates that if we get here, it is a recursive call of
     *          getenv()
     *      0x2 if set indicates that the call is from the logging code.
     *
     * If the flag indicates this is a recursive call, just return the stored
     * value of PL_mem_log;  An empty value gets turned into NULL. */
    if (strEQ(str, "PERL_MEM_LOG") && PL_mem_log[0] & 0x1) {
        if (PL_mem_log[1] == '\0') {
            return NULL;
        } else {
            return PL_mem_log + 1;
        }
    }

#endif

    GETENV_LOCK;

#ifdef PERL_MEM_LOG

    /* Here we are in a critical section.  As explained above, we do our own
     * getenv(PERL_MEM_LOG), saving the result safely. */
    ret = getenv("PERL_MEM_LOG");
    if (ret == NULL) {  /* No logging active */

        /* Return that immediately if called from the logging code */
        if (PL_mem_log[0] & 0x2) {
            GETENV_UNLOCK;
            return NULL;
        }

        PL_mem_log[1] = '\0';
    }
    else {
        char *mem_log_meat = PL_mem_log + 1;    /* first byte reserved */

        /* There is nothing to prevent the value of PERL_MEM_LOG from being an
         * extremely long string.  But we want only a few characters from it.
         * PL_mem_log has been made large enough to hold just the ones we need.
         * First the file descriptor. */
        if (isDIGIT(*ret)) {
            const char * s = ret;
            if (UNLIKELY(*s == '0')) {

                /* Reduce multiple leading zeros to a single one.  This is to
                 * allow the caller to change what to do with leading zeros. */
                *mem_log_meat++ = '0';
                s++;
                while (*s == '0') {
                    s++;
                }
            }

            /* If the input overflows, copy just enough for the result to also
             * overflow, plus 1 to make sure */
            while (isDIGIT(*s) && s < ret + TYPE_DIGITS(UV) + 1) {
                *mem_log_meat++ = *s++;
            }
        }

        /* Then each of the three significant characters */
        if (strchr(ret, 'm')) {
            *mem_log_meat++ = 'm';
        }
        if (strchr(ret, 's')) {
            *mem_log_meat++ = 's';
        }
        if (strchr(ret, 't')) {
            *mem_log_meat++ = 't';
        }
        *mem_log_meat = '\0';

        assert(mem_log_meat < PL_mem_log + sizeof(PL_mem_log));
    }

    /* If we are being called from the logger, it only needs the significant
     * portion of PERL_MEM_LOG, and doesn't need a safe copy */
    if (PL_mem_log[0] & 0x2) {
        assert(strEQ(str, "PERL_MEM_LOG"));
        GETENV_UNLOCK;
        return PL_mem_log + 1;
    }

    /* Here is a generic getenv().  This could be a getenv("PERL_MEM_LOG") that
     * is coming from other than the logging code, so it should be treated the
     * same as any other getenv(), returning the full value, not just the
     * significant part, and having its value saved.  Set the flag that
     * indicates any call to this routine will be a recursion from here */
    PL_mem_log[0] = 0x1;

#endif

    /* Now get the value of the real desired variable, and save a copy */
    ret = getenv(str);

    if (ret != NULL) {
        ret = SvPVX( newSVpvn_flags(ret, strlen(ret) ,SVs_TEMP) );
    }

    GETENV_UNLOCK;

#ifdef PERL_MEM_LOG

    /* Clear the buffer */
    Zero(PL_mem_log, sizeof(PL_mem_log), char);

#endif

    return ret;
}

PERL_STATIC_INLINE bool
Perl_sv_isbool(pTHX_ const SV *sv)
{
    return SvIOK(sv) && SvPOK(sv) && SvIsCOW_static(sv) &&
        (SvPVX_const(sv) == PL_Yes || SvPVX_const(sv) == PL_No);
}

#ifdef USE_ITHREADS

PERL_STATIC_INLINE AV *
Perl_cop_file_avn(pTHX_ const COP *cop) {

    PERL_ARGS_ASSERT_COP_FILE_AVN;

    const char *file = CopFILE(cop);
    if (file) {
        GV *gv = gv_fetchfile_flags(file, strlen(file), GVF_NOADD);
        if (gv) {
            return GvAVn(gv);
        }
        else
            return NULL;
     }
     else
         return NULL;
}

#endif

/*
 * ex: set ts=8 sts=4 sw=4 et:
 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Caml1999I030  j    NC  L2Stdlib__Pervasives%raise3@#exnG@@ @B!a @C@ @D&%raiseAA @@@-pervasives.mlQQ1@@@@-raise_notrace4@@@ @E!a @F@ @G.%raise_notraceAA@@@R22R2g@@3A@+invalid_arg5@&stringO@@ @H@ @I@ @J@+Shl,Shw@@FB@(failwith6@@@ @K @L@ @M@;T<T@@VC@ $Exit7    Q@@@A&_none_@@ A@aDB@!=8@!a @N@$boolE@@ @O@ @P@ @Q&%equalBAb@@@@bVcV@@}E@"<>9@!a @R@@@ @S@ @T@ @U)%notequalBA|@@@@|W}W
@@F@!<:@!a @V@6@@ @W@ @X@ @Y)%lessthanBA@@@@XX:@@G@!>;@!a @Z@P@@ @[@ @\@ @],%greaterthanBA@@@@Y;;Y;m@@H@"<=<@!a @^@j@@ @_@ @`@ @a*%lessequalBAʠ@@@@ZnnZn@@I@">==@!a @b@@@ @c@ @d@ @e-%greaterequalBA@@@@[[@@J@'compare>@!a @f@#intA@@ @g@ @h@ @i(%compareBA @@@@ \\@@K@#min?@ @j@@ @k@ @l@]	]@@)L@#max@@ @m@@ @n@ @o@^^@@7M@"==A@!a @p@@@ @q@ @r@ @s#%eqBA6@@@@6_!!7_!K@@QN@"!=B@!a @t@@@ @u@ @v@ @w&%noteqBAP@@@@P`LLQ`Ly@@kO@#notC@@@ @x@@ @y@ @z(%boolnotAAh@@@gazzhaz@@P@"&&D@@@ @{@!@@ @|%@@ @}@ @~@ @(%sequandBA@@@@bb@@Q@!&E@9@@ @@?@@ @C@@ @@ @@ @(%sequandBA@@@@cd
4@0ocaml.deprecatedd
d
@1Use (&&) instead.d
!d
2@@d
 d
3@@@@@d
@@R@"||F@n@@ @@t@@ @x@@ @@ @@ @'%sequorBAؠ@@@@e55e5g@@S@"orG@@@ @@@@ @@@ @@ @@ @'%sequorBA@@@@fhhg@0ocaml.deprecatedgg@1Use (||) instead.g	g@@gg@@@@@g@@(T@'__LOC__H&stringO@@ @(%loc_LOC@A!@@h h@@:U@(__FILE__I@@ @)%loc_FILE@A1@@/i0i@@JV@(__LINE__JC@@ @)%loc_LINE@AA@@?j@j;@@ZW@*__MODULE__K2@@ @+%loc_MODULE@AQ@@Ok<<Pk<h@@jX@'__POS__LE@@ @k@@ @p@@ @u@@ @@ @(%loc_POS@As@@qliirli@@Y@*__LOC_OF__M@!a @m@@ @@ @@ @(%loc_LOCAA@@@mm@@Z@+__LINE_OF__N@!a @@@ @@ @@ @)%loc_LINEAA@@@nn	
@@[@*__POS_OF__O@!a @@@ @@@ @@@ @@@ @@ @@ @@ @(%loc_POSAAՠ@@@o		o		S@@\@"|>P@!a @@@!b @@ @@ @@ @)%revapplyBA@@@@p	T	Tp	T	@@]@"@@Q@@!a @!b @@ @@
@ @@ @&%applyBA@@@@q		
q		@@'^@"~-R@"@@ @&@@ @@ @'%negintAA$@@@#r		$r		@@>_@"~+S@9@@ @=@@ @@ @)%identityAA;@@@:s		;s	
@@U`@$succT@P@@ @T@@ @@ @(%succintAAR@@@Qt

Rt

:@@la@$predU@g@@ @k@@ @@ @(%predintAAi@@@hu
;
;iu
;
b@@b@!+V@~@@ @@@@ @@@ @@ @@ @'%addintBA@@@@v
c
cv
c
@@c@!-W@@@ @@@@ @@@ @@ @@ @ǐ'%subintBA@@@@w

w

@@d@!*X@@@ @@@@ @@@ @@ @@ @̐'%mulintBA @@@@x

x

@@e@!/Y@@@ @@@@ @@@ @@ @@ @ѐ'%divintBA@@@@y

y
@@f@#modZ@@@ @@@@ @ @@ @@ @@ @֐'%modintBA@@@@zzO@@g@#abs[@#intA@@ @@@ @@ @@{PT{PW@@.h@'max_int\@@ @@ |^b!|^i@@;i@'min_int] @@ @@-}tx.}t@@Hj@$land^@C@@ @@I@@ @M@@ @@ @@ @'%andintBAK@@@@K~L~@@fk@#lor_@a@@ @@g@@ @k@@ @@ @@ @&%orintBAi@@@@ij@@l@$lxor`@@@ @@@@ @@@ @@ @@ @'%xorintBA@@@@ @ @@@m@$lnota@@@ @@@ @@ @@ A" A&@@n@#lslb@@@ @@@@ @@@ @@ @@ @'%lslintBA@@@@ B.. B.^@@o@#lsrc@@@ @@@@ @@@ @@ @@ @'%lsrintBA֠@@@@ C__ C_@@p@#asrd@@@ @@@@ @@@ @@ @@ @'%asrintBA@@@@ D D@@q@#~-.e@%floatD@@ @@@ @@ @)%negfloatAA@@@
 E E@@(r@#~+.f@@@ @ @@ @@ @)%identityAA%@@@$ F% F
 @@?s@"+.g@0@@ @@6@@ @:@@ @@ @@ @)%addfloatBAB@@@@B G
!
!C G
!
X@@]t@"-.h@N@@ @@T@@ @	X@@ @
@ @@ @)%subfloatBA`@@@@` H
Y
Ya H
Y
@@{u@"*.i@l@@ @
@r@@ @v@@ @@ @@ @)%mulfloatBA~@@@@~ I

 I

@@v@"/.j@@@ @@@@ @@@ @@ @@ @)%divfloatBA@@@@ J

 J
 @@w@"**k@@@ @@@@ @@@ @@ @@ @0caml_power_floatB@#powAA@A K LF_@'unboxed LFK LFR@@ LFH LFS@'noalloc LFW LF^@@ LFT@@x@$sqrtl@@@ @@@ @@ @/caml_sqrt_floatA@$sqrtA@A M`` N@'unboxed N N@@ N N@'noalloc N N@@ N@@y@#expm@	@@ @
@@ @ @ @!.caml_exp_floatA@#expA@A O O@'unboxed O O@@  O! O@'noalloc' O( O@@+ O@@Ez@#logn@6@@ @":@@ @#@ @$.caml_log_floatA@#logA@AB PC PQ@'unboxedI P=J PD@@M P:N PE@'noallocT PIU PP@@X PF@@r{@%log10o@c@@ @%g@@ @&@ @'0caml_log10_floatA@%log10A@Ao QRRp R@'unboxedv Rw R@@z R{ R@'noalloc R R@@ R@@|@%expm1p@@@ @(@@ @)@ @*0caml_expm1_floatA@*caml_expm1A@A S T@'unboxed T T@@ T T@'noalloc T T@@ T@@}@%log1pq@@@ @+@@ @,@ @-0caml_log1p_floatA@*caml_log1pA@A U VG`@'unboxed VGL VGS@@ VGI VGT@'noalloc VGX VG_@@ VGU@@~@#cosr@@@ @.@@ @/@ @0.caml_cos_floatA@#cosA@A Waa Wa@'unboxed Wa Wa@@ Wa Wa@'noalloc Wa	 Wa@@ Wa@@&@#sins@@@ @1@@ @2@ @3.caml_sin_floatA@#sinA@A# X$ X@'unboxed* X+ X@@. X/ X@'noalloc5 X6 X@@9 X@@S @@#tant@D@@ @4H@@ @5@ @6.caml_tan_floatA@#tanA@AP YQ YM@'unboxedW Y9X Y@@@[ Y6\ YA@'noallocb YEc YL@@f YB@@ A@$acosu@q@@ @7u@@ @8@ @9/caml_acos_floatA@$acosA@A} ZNN~ [@'unboxed [ [@@ [ [@'noalloc [ [@@ [@@ B@$asinv@@@ @:@@ @;@ @</caml_asin_floatA@$asinA@A \ ]@'unboxed ] ]@@ ] ]@'noalloc ] ]@@ ]@@ C@$atanw@@@ @=@@ @>@ @?/caml_atan_floatA@$atanA@A ^ _0I@'unboxed _05 _0<@@ _02 _0=@'noalloc _0A _0H@@ _0>@@ D@%atan2x@@@ @@@@@ @A@@ @B@ @C@ @D0caml_atan2_floatB@%atan2AA@A `JJ a@'unboxed a a@@ a a@'noalloc a a@@! a@@; E@%hypoty@,@@ @E@2@@ @F6@@ @G@ @H@ @I0caml_hypot_floatB@*caml_hypotAA@A? b@ c@'unboxedF cG c@@J cK c@'noallocQ cR c
@@U c@@o F@$coshz@`@@ @Jd@@ @K@ @L/caml_cosh_floatA@$coshA@Al dm eIb@'unboxeds eINt eIU@@w eIKx eIV@'noalloc~ eIZ eIa@@ eIW@@ G@$sinh{@@@ @M@@ @N@ @O/caml_sinh_floatA@$sinhA@A fcc g@'unboxed g g@@ g g@'noalloc g g@@ g@@ H@$tanh|@@@ @P@@ @Q@ @R/caml_tanh_floatA@$tanhA@A h i
@'unboxed i i@@ i i@'noalloc i i	@@ i@@ I@$ceil}@@@ @S@@ @T@ @U/caml_ceil_floatA@$ceilA@A j kE^@'unboxed kEJ kEQ@@ kEG kER@'noalloc	 kEV	 kE]@@		 kES@@	# J@%floor~@@@ @V@@ @W@ @X0caml_floor_floatA@%floorA@A	  l__	! m@'unboxed	' m	( m@@	+ m	, m@'noalloc	2 m	3 m@@	6 m@@	P K@)abs_float@A@@ @YE@@ @Z@ @[)%absfloatAA	M@@@	L n	M n@@	g L@(copysign@X@@ @\@^@@ @]b@@ @^@ @_@ @`3caml_copysign_floatB@-caml_copysignAA@A	k o	l qNw@'unboxed	r qNc	s qNj@@	v qN`	w qNk@'noalloc	} qNo	~ qNv@@	 qNl@@	 M@)mod_float@@@ @a@@@ @b@@ @c@ @d@ @e/caml_fmod_floatB@$fmodAA@A	 rxx	 s@'unboxed	 s	 s@@	 s	 s@'noalloc	 s	 s@@	 s@@	 N@%frexp@@@ @f@@ @h@@ @g@ @i@ @j0caml_frexp_floatAA	Ԡ@@@	 t	 t@@	 O@%ldexp@@@ @k@@@ @l@@ @m@ @n@ @o0caml_ldexp_floatB@8caml_ldexp_float_unboxedAB@A	 u	 vf@'noalloc	 vf	 vf@@	 vf@@
 P@$modf@@@ @p@@ @r@@ @q@ @s@ @t/caml_modf_floatAA
@@@
 w
 w@@
6 Q@%float@	1@@ @u+@@ @v@ @w+%floatofintAA
3@@@
2 x
3 x
@@
M R@,float_of_int@	H@@ @xB@@ @y@ @z+%floatofintAA
J@@@
I y
J y?@@
d S@(truncate@U@@ @{	c@@ @|@ @}+%intoffloatAA
a@@@
` z@@
a z@p@@
{ T@,int_of_float@l@@ @~	z@@ @@ @+%intoffloatAA
x@@@
w {qq
x {q@@
 U@(infinity%floatD@@ @@
 |
 |@@
 V@,neg_infinity@@ @@
 }
 }@@
 W@#nan@@ @@
 ~
 ~@@
 X@)max_float)@@ @@
 
 @@
 Y@)min_float6@@ @@
 

 @@
 Z@-epsilon_floatC@@ @@
  $
  1@@
 [@'fpclass  8 @@)FP_normal @@
 bf
 bo@@
 ],FP_subnormal @@
 pr
 p@@
 ^'FP_zero @@
 
 @@ _+FP_infinite @@
 
 @@ `&FP_nan @@
 
 @@ a@@A&Stdlib'fpclass@@ @@@@@ BB
@@A@! \@@.classify_float@@@ @K@@ @@ @3caml_classify_floatA@;caml_classify_float_unboxedA@@  #@'noalloc% & "@@) @@C b@!^@@@ @@@@ @@@ @@ @@ @@A $(B $-@@\ c@+int_of_char@$charB@@ @
]@@ @@ @)%identityAA[@@@Z 66[ 6f@@u d@+char_of_int@\@@ @$charB@@ @@ @@o gkp gv@@ e@&ignore@!a @$unitF@@ @@ @'%ignoreAA@@@  @@ f@.string_of_bool@$boolE@@ @v@@ @@ @@  @@ g@.bool_of_string@@@ @@@ @@ @@  @@ h@2bool_of_string_opt@@@ @&optionJ2@@ @@@ @@ @@  @@ i@-string_of_int@@@ @@@ @@ @@ "& "3@@ j@-int_of_string@	@@ @
@@ @@ @2caml_int_of_stringAA@@@ DD D@@ k@1int_of_string_opt@@@ @D@@ @@@ @@ @@ 
 @@' l@/string_of_float@@@ @@@ @@ @@   @@: m@/float_of_string@
@@ @/@@ @@ @4caml_float_of_stringAA7@@@6 7 @@Q n@3float_of_string_opt@@@ @@@ @@@ @@ @@N O -@@i o@#fst@!a @!b @@ @	@ @'%field0AAj@@@i DDj Dl@@ p@#snd@!a @!b @@ @@ @'%field1AA@@@ mm m@@ q@!@@$listIl @@@ @@
@@ @
@@ @@ @@ @@  @@ r@*in_channel  8 @@@A*in_channel@@ @@@@@  @@@@ s@@+out_channel  8 @@@A+out_channel@@ @@@@@  @@@@ t@@%stdin&Stdlib*in_channel@@ @@  @@ u@&stdout+out_channel@@ @@ 	 @@ v@&stderr@@ @@  #@@
 w@*print_char@@@ @$unitF@@ @@ @@
 -1
 -;@@
 x@,print_string@@@ @@@ @@ @@
 IM
 IY@@
0 y@+print_bytes@%bytesC@@ @*@@ @@ @@
* im
+ ix@@
E z@)print_int@	,@@ @=@@ @@ @@
= 
> @@
X {@+print_float@@@ @P@@ @@ @@
P 
Q @@
k |@-print_endline@
8@@ @c@@ @@ @@
c 
d @@
~ }@-print_newline@r@@ @v@@ @@ @@
v 
w @@
 ~@*prerr_char@@@ @@@ @@ @@
 
 @@
 @,prerr_string@
q@@ @@@ @@ @@
 #
 /@@
 @+prerr_bytes@@@ @@@ @@ @@
 ?C
 ?N@@
 @)prerr_int@	@@ @@@ @@ @@
 ]a
 ]j@@
 @+prerr_float@M@@ @@@ @@ @@
 w{
 w@@
 @-prerr_endline@
@@ @@@ @@ @@
 
 @@ @-prerr_newline@@@ @@@ @@ @@
 
 @@ @)read_line@
@@ @
@@ @@ @@  @@) @(read_int@@@ @
@@ @@ @@! " @@< @,read_int_opt@0@@ @q
+@@ @@@ @@ @@9 : @@T @*read_float@H@@ @@@ @@ @ @L +/M +9@@g @.read_float_opt@[@@ @@@ @@@ @@ @@d GKe GY@@ @)open_flag  8 @@+Open_rdonly ݐ@@s t @@ +Open_wronly ސ@@| } @@ +Open_append ߐ@@  @@ *Open_creat @@  @@ *Open_trunc @@  @@ )Open_excl @@  @@ +Open_binary @@  @@ )Open_text @@  @@ -Open_nonblock @@ 	 	@@ @@A)open_flag@@ @@@@@ kk
@@A@ @@(open_out@@@ @	@@ @@ @@  '@@ @,open_out_bin@@@ @	@@ @
@ @@ 37 3C@@ @,open_out_gen@f/)open_flag@@ @@@ @
@
@@ @@@@ @A0@@ @@ @@ @@ @@ SW Sc@@* @%flush@P?@@ @"@@ @@ @@" sw# s|@@= @)flush_all@1@@ @5@@ @@ @@5 6 @@P @+output_char@ve@@ @@@@ @N@@ @@ @@ @@N O @@i @-output_string@~@@ @@<@@ @ g@@ @!@ @"@ @#@g h @@ @,output_bytes@@@ @$@X@@ @%@@ @&@ @'@ @(@  @@ @&output@@@ @)@q@@ @*@@@ @+@@@ @,@@ @-@ @.@ @/@ @0@ @1@    	@@ @0output_substring@@@ @2@@@ @3@@@ @4@@@ @5@@ @6@ @7@ @8@ @9@ @:@      '@@ @+output_byte@@@ @;@@@ @<@@ @=@ @>@ @?@  ; ?  ; J@@ @1output_binary_int@$@@ @@@@@ @A@@ @B@ @C@ @D@  Y ]  Y n@@ @,output_value@=,@@ @E@ @F@@ @G@ @H@ @I@      @@- @(seek_out@SB@@ @J@@@ @K+@@ @L@ @M@ @N@+   ,   @@F @'pos_out@l[@@ @O1@@ @P@ @Q@>   ?   @@Y @2out_channel_length@n@@ @RD@@ @S@ @T@Q   R   @@l @)close_out@@@ @Ud@@ @V@ @W@d  !e  !
@@ @/close_out_noerr@@@ @Xw@@ @Y@ @Z@w !!x !!*@@ @3set_binary_mode_out@@@ @[@@@ @\@@ @]@ @^@ @_@ !=!A !=!T@@ @'open_in@x@@ @`@@ @a@ @b@ !k!o !k!v@@ @+open_in_bin@@@ @c@@ @d@ @e@ !! !!@@ @+open_in_gen@2@@ @f@@ @g@@@ @h@@@ @i	@@ @j@ @k@ @l@ @m@ !! !!@@ @*input_char@@@ @n@@ @o@ @p@ !! !!@@ @*input_line@.+@@ @q@@ @r@ @s@  !! !!@@ @%input@A>@@ @t@@@ @u@
@@ @v@
@@ @w
@@ @x@ @y@ @z@ @{@ @|@% !!& !!@@@ @,really_input@fc@@ @}@@@ @~@
3@@ @@
9@@ @ J@@ @ @ @ @ @ @ @ @ @ @J ""K ""@@e @3really_input_string@@@ @ @
R@@ @ <@@ @ @ @ @ @ @c "'"+d "'">@@~ @*input_byte@@@ @ 
i@@ @ @ @ @v "U"Yw "U"c@@ @0input_binary_int@@@ @ 
|@@ @ @ @ @ "q"u "q"@@ @+input_value@@@ @ o @ @ @ @ "" ""@@ @'seek_in@@@ @ @
@@ @ @@ @ @ @ @ @ @ "" ""@@ @&pos_in@@@ @ 
@@ @ @ @ @ "" ""@@ @1in_channel_length@@@ @ 
@@ @ @ @ @ "" ""@@ @(close_in@@@ @ @@ @ @ @ @ ## ##@@ @.close_in_noerr@,)@@ @ @@ @ @ @ @ ###' ###5@@ @2set_binary_mode_in@?<@@ @ @|@@ @ @@ @ @ @ @ @ @ #G#K #G#]@@2 @Ӡ)LargeFileA )LargeFile@# #s#s$ #s#@> @@#ref  8 !a @ @A(contentsA	6 ##7 ##@@Q @@A<#ref@@ @  @@@@@C ##D ##@@@@^ @@#ref@!a @ ,@@ @ @ @ ,%makemutableAA\@@@[ ##\ ##@@v @!!@!a @ @@ @ @ @ '%field0AAs@@@r ##s #$@@ @":=@+!a @ @@ @ @	@@ @ @ @ @ @ *%setfield0BA@@@@ $$ $$T@@ @$incr@I@@ @ @@ @ %@@ @ @ @ %%incrAA@@@ $U$U $U$~@@ @$decr@d@@ @ @@ @ @@@ @ @ @ %%decrAAǠ@@@ $$ $$@@ @&result  8 !a @ !b @ @B"Ok@@ $$ $$@@  %Error@@ $$ $$@@ @@A&result$ @@ @ YY@@@@@@ $$@@@@ @@'format6  8 !a @ Ǡ!b @ Ơ!c @ Š!d @ Ġ!e @ à!f @ @F@A8CamlinternalFormatBasics'format6&"@@ @ Ƞ OO OO@@@@@@@@@@; $$< %%Q@@@@V A@'format4  8 !a @ ̠!b @ ˠ!c @ ʠ!d @ @D@A]@@ @ ͠ O O@@@@@@@@k %R%Rl %R%@@@@ A@&format  8 !a @ Р!b @ Ϡ!c @ @C@AF@@ @ Ѡ O @@@@@@@ %% %%@@@@ A@0string_of_format@'format6y @ נ{ @ ֠} @ ՠ @ Ԡ @ Ӡ @ @@ @ @@ @ @ @ @ %% %%@@ @0format_of_string@d!a @ !b @ !c @ ߠ!d @ ޠ!e @ ݠ!f @ @@ @ !
@@ @ @ @ )%identityAA@@@ %% &1&a@@ @"^^@,Y @  @  @  @  @  @ @@ @ @>k
 @  @ @@ @ Jw@@ @ @ @ @ @ @ &b&f &b&l@@9 @$exit@ @@ @  @ @ @ @. &v&z/ &v&~@@I @'at_exit@@?@@ @ C@@ @ @ @ G@@ @ @ @ @G &&H &&@@b @1valid_float_lexem@/@@ @ 3@@ @ @ @ @Z &&[ &&@@u @*do_at_exit@i@@ @ m@@ @ @ @ @m &&n &&@@ @@   p      ;   /2Stdlib__Pervasives0/|rkU
@ڠ&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Caml1999Y030  P  G  
T    ( 0Stdlib__Printexc@-Stdlib__Uchar0o9us:2[]+Stdlib__Seq0Jd8_mJk.Stdlib__Printf0pJUX빃Ύ0&\cMv>fN+Stdlib__Obj0_bE@Xt-Stdlib__Int320Z(I.Stdlib__Buffer0ok
Vj.Stdlib__Atomic0#e/Gyt-Stdlib__Array0XUJө
	ƿ8&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@.Stdlib__Printf0TF	zhrj+Stdlib__Obj0ɏNJ"fn.Stdlib__Buffer0Cr`M-i.Stdlib__Atomic0i{+؇'﷠&Stdlib0~tV*e @B@EGB@@   	#camlStdlib__Printexc__to_string_241AA!e @@@'*match*5	&camlStdlib__Printexc__use_printers_219
@    +printexc.ml JHV

 JA:Stdlib__Printexc.to_string	 Stdlib__Printexc.to_string.(fun)@@@     KDJ

 K@	+camlStdlib__Printexc__to_string_default_227@     LL_

 L@A@AA@A@?camlStdlib__Printexc__print_245BA@A@?camlStdlib__Printexc__catch_250BA@A@	)camlStdlib__Printexc__print_backtrace_353AA@A@	'camlStdlib__Printexc__get_backtrace_455AA@A@=camlStdlib__Printexc__fun_862AA$primL@5caml_record_backtraceAA @@@
@@A@=camlStdlib__Printexc__fun_860AAM@5caml_backtrace_statusAA@@@@@A@	*camlStdlib__Printexc__register_printer_460AA@A@JAA@A@	/camlStdlib__Printexc__raw_backtrace_entries_258AA"bt@A@=camlStdlib__Printexc__fun_858AA/N@	 caml_get_exception_raw_backtraceAA.@@@@@A@	-camlStdlib__Printexc__print_raw_backtrace_349BA'outchan_-raw_backtrace`@	3camlStdlib__Printexc__print_exception_backtrace_287
	/camlStdlib__Printexc__convert_raw_backtrace_276@    v d I A	$Stdlib__Printexc.print_raw_backtrace	*Stdlib__Printexc.print_raw_backtrace.(fun)@@    { B I @A@	1camlStdlib__Printexc__raw_backtrace_to_string_406AA-raw_backtrace@	-camlStdlib__Printexc__backtrace_to_string_356@     V{ A	(Stdlib__Printexc.raw_backtrace_to_string	.Stdlib__Printexc.raw_backtrace_to_string.(fun)@@     B{ @A@	<camlStdlib__Printexc__default_uncaught_exception_handler_480BA@A@	8camlStdlib__Printexc__set_uncaught_exception_handler_486AA"fn@@A@h4camlStdlib__Printexc@@@@
@    =h H''=A	/Stdlib__Printexc.set_uncaught_exception_handler	5Stdlib__Printexc.set_uncaught_exception_handler.(fun)@A@	)camlStdlib__Printexc__backtrace_slots_431AA@A@	6camlStdlib__Printexc__backtrace_slots_of_raw_entry_440AA%entry@  BA@     R] A	-Stdlib__Printexc.backtrace_slots_of_raw_entry	3Stdlib__Printexc.backtrace_slots_of_raw_entry.(fun)@@     B] @A@Р	1camlStdlib__Printexc__backtrace_slot_is_raise_409AA%param@@@     Xb A	(Stdlib__Printexc.backtrace_slot_is_raise	.Stdlib__Printexc.backtrace_slot_is_raise.(fun)@A@	2camlStdlib__Printexc__backtrace_slot_is_inline_414AA@@AE
@     XcXX ðA	)Stdlib__Printexc.backtrace_slot_is_inline	/Stdlib__Printexc.backtrace_slot_is_inline.(fun)@@     DTXX @A@	1camlStdlib__Printexc__backtrace_slot_location_423AA@A@	0camlStdlib__Printexc__backtrace_slot_defname_427AA@A@	/camlStdlib__Printexc__format_backtrace_slot_278BA@A@	.camlStdlib__Printexc__raw_backtrace_length_450AA"bt@  @@     ^m A	%Stdlib__Printexc.raw_backtrace_length	+Stdlib__Printexc.raw_backtrace_length.(fun)@A@=camlStdlib__Printexc__fun_856BAPO@7caml_raw_backtrace_slotBA@@@@@@A@=camlStdlib__Printexc__fun_854AAQ@?caml_convert_raw_backtrace_slotAA@@@@@A@=camlStdlib__Printexc__fun_852AAR@<caml_raw_backtrace_next_slotAA@@@@@A@	%camlStdlib__Printexc__exn_slot_id_470AA@A@	'camlStdlib__Printexc__exn_slot_name_474AA@A@4camlStdlib__PrintexcY8camlStdlib__Printexc__16@8camlStdlib__Printexc__14K7camlStdlib__Printexc__1&File "8camlStdlib__Printexc__13B@8camlStdlib__Printexc__12K7camlStdlib__Printexc__2(", line 8camlStdlib__Printexc__11D@@@8camlStdlib__Printexc__10K7camlStdlib__Printexc__3-, characters 7camlStdlib__Printexc__9D@@@7camlStdlib__Printexc__8Lm7camlStdlib__Printexc__7D@@@7camlStdlib__Printexc__6K7camlStdlib__Printexc__4": 7camlStdlib__Printexc__5B@@@@@@@@@@@@8camlStdlib__Printexc__15	(File "%s", line %d, characters %d-%d: %s@?camlStdlib__Printexc__field_128BA@A@	&camlStdlib__Printexc__other_fields_213BA@A@	 camlStdlib__Printexc__fields_216AA@A@SAA@A@ʠZBA@A@CAA@A@ Ѡ	"camlStdlib__Printexc__exn_slot_466AA@A@gh8camlStdlib__Printexc__98@@	/camlStdlib__Printexc__try_get_raw_backtrace_490AA@A@	4camlStdlib__Printexc__handle_uncaught_exception'_493BA@A@	3camlStdlib__Printexc__handle_uncaught_exception_500BA@A@@IWdvp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Caml1999I030  .    !   4Stdlib__StringLabels!t   8 @@@A&stringO@@ @@@@@0stringLabels.mli R R@@@@@A@$make @#intA@@ @@$charB@@ @ @@ @@ @@ @@ U U@@/A@$init @@@ @!f@'@@ @#@@ @@ @A@@ @@ @@ @@? [@ [@@PB@%empty N@@ @@L bM b@@]C@(of_bytes @%bytesC@@ @c@@ @@ @@a hb h@@rD@(to_bytes @r@@ @@@ @@ @@t ohhu oh@@E@&length @@@ @w@@ @@ @.%string_lengthAA @@@ v v%@@F@#get @@@ @@@@ @@@ @@ @@ @0%string_safe_getBA@@@@ yll yl@@G@&concat #sep@@ @@$listI@@ @@@ @@@ @@ @@ @@  @@H@#cat @@@ @@@@ @@@ @@ @@ @@  @@I@%equal @@@ @@@@ @$boolE@@ @@ @@ @@   @@J@'compare @@@ @@@@ @@@ @@ @@ @@ EE E`@@'K@+starts_with &prefix)@@ @@/@@ @4@@ @@ @@ @@1 2 [@@BL@)ends_with &suffixD@@ @@J@@ @O@@ @@ @@ @@L M )@@]M@-contains_from @]@@ @@Q@@ @@O@@ @n@@ @@ @@ @@ @@k l @@|N@.rcontains_from @|@@ @@p@@ @@n@@ @@@ @@ @@ @@ @@ pp p@@O@(contains @@@ @@@@ @@@ @@ @@ @@ jj j@@P@#sub @@@ @#pos@@ @#len@@ @@@ @@ @@ @@ @@  %@@Q@-split_on_char #sep@@ @@@@ @ @@ @@@ @@ @@ @@  M@@R@#map !f@@@ @@@ @@ @@@@ @	@@ @@ @@ @@ WW W@@S@$mapi !f@
@@ @@@@ @@@ @@ @@ @@,@@ @0@@ @@ @@ @@. / A@@?T@)fold_left !f@!a @@/@@ @
@ @@ @$init@S@@ @@ @@ @@ @@Q R @@bU@*fold_right !f@L@@ @@!a @@ @@ @@r@@ @$init@ @@ @@ @@t   u   @@V@'for_all !f@o@@ @@@ @@ @@@@ @@@ @@ @@ @ @ !W!W !W!@@W@&exists !f@@@ @@@ @@ @@@@ @@@ @@ @@ @@ !! !"@@X@$trim @@@ @@@ @	@ @
@ "" ""@@Y@'escaped @@@ @@@ @@ @
@ #S#S #S#q@@Z@/uppercase_ascii @@@ @@@ @@ @@	%%	%%@@ [@/lowercase_ascii @ @@ @@@ @@ @@&;&;&;&a@@\@0capitalize_ascii @@@ @@@ @@ @@&&&'@@&]@2uncapitalize_ascii @&@@ @*@@ @@ @@('')''@@9^@$iter !f@#@@ @$unitF@@ @@ @@I@@ @@@ @@ @@ @ @K#(x(xL#(x(@@\_@%iteri !f@N@@ @!@L@@ @")@@ @#@ @$@ @%@p@@ @&3@@ @'@ @(@ @)@r')>)>s')>)s@@`@*index_from @@@ @*@w@@ @+@u@@ @,@@ @-@ @.@ @/@ @0@/**/**;@@a@.index_from_opt @@@ @1@@@ @2@@@ @3&optionJ@@ @4@@ @5@ @6@ @7@ @8@7+-+-7+-+e@@b@+rindex_from @@@ @9@@@ @:@@@ @;@@ @<@ @=@ @>@ @?@>,-,->,-,[@@c@/rindex_from_opt @@@ @@@@@ @A@@@ @BE@@ @C@@ @D@ @E@ @F@ @G@E-T-TE-T-@@d@%index @@@ @H@@@ @I@@ @J@ @K@ @L@L.Z.ZL.Z.{@@$e@)index_opt @$@@ @M@@@ @N| @@ @O@@ @P@ @Q@ @R@1O..2O..@@Bf@&rindex @B@@ @S@.@@ @T:@@ @U@ @V@ @W@JT/,/,KT/,/N@@[g@*rindex_opt @[@@ @X@G@@ @YW@@ @Z@@ @[@ @\@ @]@hW//iW//@@yh@&to_seq @@@ @^&Stdlib#Seq!tl@@ @_@@ @`@ @a@^0@0@^0@0\@@i@'to_seqi @@@ @b#Seq!t@@ @d@@ @c@ @e@@ @f@ @g@e1717e171\@@j@&of_seq @<#Seq!t@@ @h@@ @i@@ @j@ @k@j11j11@@k@&create @@@ @ly@@ @m@ @n2caml_create_stringAAM@@@q2Y2Yr22@0ocaml.deprecatedr22r22@	,Use Bytes.create/BytesLabels.create instead.r22r22@@r22r22@@@@@r22@@ l@#set @@@ @o@@@ @p@@@ @q@@ @r@ @s@ @t@ @u0%string_safe_setCA@@@@@z33{4:4y@0ocaml.deprecated{4:4?{4:4O@	&Use Bytes.set/BytesLabels.set instead.&{4:4Q'{4:4w@@){4:4P*{4:4x@@@@@,{4:4<@@<m@$blit #src>@@ @v'src_pos4@@ @w#dst@@ @x'dst_posD@@ @y#lenL@@ @z!@@ @{@ @|@ @}@ @~@ @@ @ @`55a56@@qn@$copy @q@@ @ u@@ @ @ @ @s7n7nt77@0ocaml.deprecatedz77{77@	&Strings now immutable: no need to copy7777@@7777@@@@@77@@o@$fill @>@@ @ #pos@@ @ #len@@ @ @@@ @ t@@ @ @ @ @ @ @ @ @ @ @8f8f88@0ocaml.deprecated8888@	(Use Bytes.fill/BytesLabels.fill instead.8888@@8888@@@@@88@@p@)uppercase @@@ @ @@ @ @ @ @:
:
:A:@0ocaml.deprecated:+:0:+:@@	@Use String.uppercase_ascii/StringLabels.uppercase_ascii instead.:A:F:A:@@:A:E:A:@@@@@:+:-@@q@)lowercase @@@ @ 	@@ @ @ @ @;;;;@0ocaml.deprecated;;;;@	@Use String.lowercase_ascii/StringLabels.lowercase_ascii instead.;;;;@@;;;;@@@@@;;@@/r@*capitalize @/@@ @ 3@@ @ @ @ @1<<2=.=w@0ocaml.deprecated8==9==-@	BUse String.capitalize_ascii/StringLabels.capitalize_ascii instead.C=.=3D=.=u@@F=.=2G=.=v@@@@@I==@@Ys@,uncapitalize @Y@@ @ ]@@ @ @ @ @[>K>K\>>@0ocaml.deprecatedb>o>tc>o>@	FUse String.uncapitalize_ascii/StringLabels.uncapitalize_ascii instead.m>>n>>@@p>>q>>@@@@@s>o>q@@t@)get_uint8 @@@ @ @w@@ @ {@@ @ @ @ @ @ @CUCUCUCy@@u@(get_int8 @@@ @ @@@ @ @@ @ @ @ @ @ @CCCD
@@v@-get_uint16_ne @@@ @ @@@ @ @@ @ @ @ @ @ @D{D{D{D@@w@-get_uint16_be @@@ @ @@@ @ @@ @ @ @ @ @ @E'E'E'EO@@x@-get_uint16_le @@@ @ @@@ @ @@ @ @ @ @ @ @EEEE@@ y@,get_int16_ne @ @@ @ @@@ @ @@ @ @ @ @ @ @F|F|	F|F@@z@,get_int16_be @@@ @ @
@@ @ @@ @ @ @ @ @ @!G$G$"G$GK@@2{@,get_int16_le @2@@ @ @&@@ @ *@@ @ @ @ @ @ @:GG;GG@@K|@,get_int32_ne @K@@ @ @?@@ @ %int32L@@ @ @ @ @ @ @UHqHqVHqH@@f}@,get_int32_be @f@@ @ @Z@@ @ @@ @ @ @ @ @ @nIIoII=@@~@,get_int32_le @@@ @ @s@@ @ 4@@ @ @ @ @ @ @IIII@@@,get_int64_ne @@@ @ @@@ @ %int64M@@ @ @ @ @ @ @$JWJW$JWJ@@ @@,get_int64_be @@@ @ @@@ @ @@ @ @ @ @ @ @+JJ+JK#@@ A@,get_int64_le @@@ @ @@@ @ 4@@ @ @ @ @ @ @2KK2KK@@ B@*unsafe_get @@@ @ @@@ @ @@ @ @ @ @ @ 2%string_unsafe_getBAf@@@@=LL=LL@@ C@*unsafe_set @@@ @ @@@ @ @@@ @ @@ @ @ @ @ @ @ @ 2%string_unsafe_setCA@@@@@>LL?MM,@0ocaml.deprecated?MM?MM+@@"?MM@@2 D@+unsafe_blit #src4@@ @ 'src_pos*@@ @ #dst@@ @ 'dst_pos:@@ @ #lenB@@ @ @@ @ @ @ @ @ @ @ @ @ @ @ 0caml_blit_stringE@Ϡ@@@@@@@^@M-M-_BMM@'noalloceBMMfBMM@@iBMM@@y E@+unsafe_fill @@@ @ #poso@@ @ #lenw@@ @ @u@@ @ R@@ @ @ @ @ @ @ @ @ @ 0caml_fill_stringD@
@@@@@@CMMENN0@'noallocDMNDMN@@DMNDMN@0ocaml.deprecatedENNENN/@@ENN@@ F@@         N   >4Stdlib__StringLabels05OҹހA]^+Stdlib__Seq0Jd8_mJk&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@            @@                                                                                                         Caml1999Y030  A   A        ( ,Stdlib__Unit@02U8|L^ N&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@@B@@@:camlStdlib__Unit__equal_83BA%param V U@AA<camlStdlib__Unit__compare_87BA Y X@@A>camlStdlib__Unit__to_string_90AA \@3camlStdlib__Unit__1"()A@kz
!ϓ	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               #!/bin/sh
set -e

crondir="/var/spool/cron"
action="$1"

if [ "$action" != configure ]; then
    exit 0
fi


# Add group for crontabs
getent group crontab > /dev/null 2>&1 || addgroup --system crontab

# Fixup crontab , directory and files for new group 'crontab'.
# Can't use dpkg-statoverride for this because it doesn't cooperate nicely
# with cron alternatives such as bcron
if [ -d $crondir/crontabs ] ; then
    chown root:crontab $crondir/crontabs
    chmod 1730 $crondir/crontabs
    # This used to be done conditionally. For versions prior to "3.0pl1-81"
    # It has been disabled to suit cron alternative such as bcron. 
    cd $crondir/crontabs
    set +e

    # Iterate over each entry in the spool directory, perform some sanity
    # checks (see CVE-2017-9525), and chown/chgroup the crontabs
    for tab_name in *
    do
        [ "$tab_name" = "*" ] && continue
        tab_links=`stat -c '%h' "$tab_name"`
        tab_owner=`stat -c '%U' "$tab_name"`

        if [ ! -f "$tab_name" ]
        then
            echo "Warning: $tab_name is not a regular file!"
            continue
        elif [ "$tab_links" -ne 1 ]
        then
            echo "Warning: $tab_name has more than one hard link!"
            continue
        elif [ "$tab_owner" != "$tab_name" ]
        then
            echo "Warning: $tab_name name differs from owner $tab_owner!"
            continue
        fi

		chown "$tab_owner:crontab" "$tab_name"
		chmod 600 "$tab_name"
    done
    set -e
fi



                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              /etc/cron.d/.placeholder
/etc/cron.daily/.placeholder
/etc/cron.hourly/.placeholder
/etc/cron.monthly/.placeholder
/etc/cron.weekly/.placeholder
/etc/cron.yearly/.placeholder
/etc/crontab
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #!/bin/sh
set -e

if [ "$1" = "purge" ]; then 
    rm -f /etc/cron.allow /etc/cron.deny
fi


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   58b5330b5251f742a3cccb77a4d83ab8  usr/share/doc/cron-daemon-common/changelog.Debian.gz
ae51e17146b27e53762b8a582eb2f2f0  usr/share/doc/cron-daemon-common/changelog.gz
a9ce7f7f33f910df58d78d12b6c28e4e  usr/share/doc/cron-daemon-common/copyright
f2c45a9594a0f9900eed5973b305d966  usr/share/lintian/overrides/cron-daemon-common
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ,  .   ,  ..  ,  LICENSE h  dist-cjsh  dist-es rr  package.jsont  	README.md   v 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ތw,  .   ,  ..  ,  LICENSE zg  dist-cjs}g  dist-es sr  package.jsont  	README.md   Dv 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        zuR# DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *	* * *	root	cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily; }
47 6	* * 7	root	test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; }
52 6	1 * *	root	test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; }
#
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Zv)&"RB Avzj;Ik?9,yE ` ̢oз覻.s뫴ޙAI4%`~wE.î/ODJN3Xʓ͗+5KգGB|.VťgKѕZͼ?ytLO'G*DPb-PxZZͤZOR+gV~QNws.gO.W_4y~%٢/^cIaG|ѣdWr6/CoCR]YDOUIn,HsaUJWeZxEfiJˏƺd!ENqHJ\YeuU̲JӋ\Q,$J/^{UߒJ2$ǥFo!(պ(+i~QEQWL+|U'gn<5MѸsd$_?JL.VX|
r	`
PٚOOs<U
w?iՊ`ûtz]+x'ɡJ$)=n3-4QB}5\whB8pBɾ^g)rSUXK8L'qG!i`RDVs}(EX  M/ե*+ؙ>E2Px*C
1[//Nl9r1.tU:"9rVz8BM*tdBa@Bt-R]A.s~۱^4
i0&nIvRYd+k?
:O?Y)Pٵd}Vo#maQ+NN*Wg.H٪Q&fN`\e^ J;|sp5FA)@6iFV0^2CEV.4ˁn?XpSQֲJVJ9[f[Z+Q*55>HU;zyV
[Jw,Mnrc5xQꋕԟG'*'- h 7_/QqPPMEQšź,.	%GWʊ9(,|fEU|(+y*KLwҚoUgUJ3?s\j]k$0|H).iK3A+NVG{ωCs˹./
o\q'E>K9l\dNkR|U>:j5eP$DwWB^pܤ\O;^tr͗Ұ=D'T٭3G(́~Ck^b}T7|Q#{ȈJ%WM]>Pz%6
Փ*J/`2]
 ư(FL߿[s*9H2Qecrsj*>bV57ڽ3`\fzM% $'fXu'c~Xl6R0U!1mR٘ '͘+s)ZR&?\7J*I*3TM-O҄
^t^넬 45;GQ7['Pö8;4Z*t(XaJޛF5
MARqӌ=F&=Lj Ax|&nn_{wmWe1Khj%yH?gFA8m9!'"GmLY-ټ!	BQLJ$^֙
(wnc#cvVJ"J1/K2|QNc@wi>5?}j~=Jf~+Wړ0e\-}IBB)55T?	b,o{N*QWjCm1'Rn	gȕY:3%Q3n!4,I\jiʪJ? D[iC'H:jț0I-vΠN惡ǝѝg 1
`̮{ȃ0H5e-+hB-9褕1k	ll	
ɵܰl4Zc}룻Of0jDWDYF.6~ݴB<ulOpϋ|ѽw
jM@NyuKM?TUW
MUic-
jە cb㝗uP
ϥn\xm6hV#T͹[G~%`4hl5=m9yl gD'c.r]y{ \D(G'-q>NֿWBf j(@
 
nzegZ:A9J
Mթ̴C_x'ξB[F4^پ?d
2K{xuKsMwI0u.iEՂxJJ8L:\\QCEg4$s+hٌמ/S]q
%?ஂۀ
ʥbt	znkm)ܖ;t[# "E6 %XhN%)M4up؀@ᯯIsM[Azf'*<5bzT"w89ZAsw׮ Eнfq.&{e6&1w.
6ol|<fauߖR<BW:@
 x#|ls}N͈.Y]MiLgS$޶|EVx'0A39D4Sܺ*+NS	][Lkm5?i#Ñ'7ĿBRKa/#SqCtٴq[6Χ0V;L9 מ	t}3" 'rjn<>EcT)M?ĄS?ؓHѱi6; UʓtMyp)[&qc'M[(QdS<<iUN\۵^oKn҄p4mMnA1]Dk.]_Z2w4dj7):+,
P#%m?{3P7k;rH:4V^y=nm{%>p7g/Y؅vP}ꦎw1HU_UJ
v,ݪT#ݣQ_ -qBjRsCQm׺W*+f4P4RoؽA1M=$Iae;B4Z0պ9!w\c2U
bdlDnM9k)0D]f57D1{zp=xMf_CZep7勫/:"La4Ťi
}7wm7N|_#ʶ< hgC'dM=
AZb;dFi0|?
Ío{kMS28mnZk,ѡ񉘣</MڷP&?x<OC{K$}UD9&Ҥ1Ȣ.et[/AO\$g湫bWFxV̌'5u
(6zX/쮐-~?2cg Pl."=->aFwL"gM.j,ׯҼ ~?aUI@=2:0cN8W]F"㉆O#
.Kɵܛ]z*~Hy Fh}3)Poaؾ
;5DN#K-֙rՋ/Ξx=I8=BqSF4z훙O[%q6	=+[ޭⱳ+dS1y]x^W7{GQ,                                                                                                                                                                                   Y]sH}vذ=Q1Lt Ʀ`=MdIYU95{SrAm)?^݆eu+2>}G74'W:91_V׻bۺ]nS_'NZemrz]`B{46s|d[\2niBG)ЭKqټMcr¦(ںl|_4z5sips}M+1*FzJǒ}rMYm\bg_}
zsgHl`54y{ۭOҧ8cHC#:۹ф-=wfSkN]m3,PAc&س
εşvŏ5,Zz;ѭ˦
.[&'kgV_OvE31w9v&dy!/îS
p4k'^O9o="g*U{Qr!dh,6*7AX]"KcQlT4T 7CJxx>8?x׏V
}lD{S+"R$(,0*&CJK>&Gj?C3DI~$M^`a4 NRO2ptC!v6bqMq@(U?P-|D~J=SۧOXc&w;]u$*.sq147cϝׯ_OK
YKMlv<qLB+_ص"j_ĘNo{\yʉ0d6c8u{Amsfy=Sgu$u@uӖڸ1˲zJPjKxDG1HxOie,+
ƂA%EbXEr"j42SkgZ3!83Mf/Ql%ɷA@z5cQ
C&XD1@xVO/ ƧeHgm@ؕW\2lL{dZ<^H!u\UdG
L$ۓ'{QBmLw4ÐՍ+5,Q="2ǿyKk(:.NSV}ST%+ks9(`v:bGfA
>尹5&Ӵkbǘ3h1CJjܦQ=o(w6E'j0RYuKPr>aP
((egBVc`u^,;.0\cq@\qQ;$>T[X~i^͛7 ؒ$$XfR-(A?%%5-uPes{9kǜ4_7bEwE֮jHQxt{^-aӀRTdo\ɮ1}!Hkxl锽K&ՐJ++}yB"-EL1K#d?(腪

;g-(brIHtT6;X
>2̕p["BJ1#SvzӦc}B.IŴGš|u,պc;1q5d	3jH{\ÎO2v
!F
!+q0'y
 !~k!,[(凛ן>_'u㐲CBm0̛\jny1	g4;#<?Wkrxln/v,V*7KH+f1@/)X
/'XQN҂Dl콶m20)DW 稕vn;p6iJxZG'LV=bz6XѢb<WCԟMaf/zwt4|WzIǾ焑ݗ;idӸIP}^x[%.mHbTQY
""96ww &}$ =Ϯ%):ʧD*/BJjRzezwz3:N,50i{)L,?{!@<n8FZu8zz5F~H
>=%G,sR
Vy6W%3QC،aӀ%p,ׁݜ4.NS &(ߵB/ɗA/.ٟqf13{=^z26 .I qz$J8 9Dce*=֛ҁ29JW7W#+dE:ݝk%ĲaВH/摄^a#!v9O`5z@N(F4ڮK[^Ѕ61ޱ+AϴomJFmOe3Hn'Pa;1rVCH
`w:vcǆ-|)ŋl"+n~ů#[nIÛaمz/4帑00)r菎el%?-VJFc!3c8WLAJOPIcl
q
&6,NZX(
atmgԜJ
9t)[:(yh
c9uk   	dgt(-BrSUwV>jviфhɼ\g2hnA%̔"
4FC]膇o_isUmi>MtĔIu(h e"*q5Zq,
:UL3Z}{
R|8ʕ
X`/"u0%21_w'UKQ	'<#np_!g!wq;7b$H%_%h;ONrʴ8*de%Hr3% VBdZG`2{L4?{DژϘ[Ĺ|x-O~qPy	H%d#e΋mry-gkyׁ~
+\4clк*SWKܺ!SZpNudNk?~'b<r:z/_>.J}Ik̑GܗK׺koY!3q+N_*)ݙ@!gA67c_fc2<ob3)$V1/TE;{th%[d+F>3(!6<b%8޴%F*@ENh|ϟ,?B2D'lqa 6 ƙ9@@>ޘ0W^eye,<̿_ޚL/Lt|LQ/ѧ5"1	9K믗_Z0.6Z??ym!7J{Vn7~Jce!!92fv?eŜo57 9{bjȬ,vK,D|"х~ؠ5;Y_?EB3#>]$?|YV>PToPydLɷuᠲutl$NT:YKw]/}=X4Q(|U/SG\]^a:Tq&xs6Ҝ 5A.+MLh$<9;&4Gʬjy_&*X<(g9PJI)K@+'v8E=cof(X%ƾr>c?zG                                                                                                                                                                                                                                                      Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: vixie-cron
Upstream-Contact: Paul Vixie <paul@vix.com>
Source:
 The original source for this package could be obtained from 
 ftp://ftp.vix.com/pub/vixie/cron-3.0, although that link appears to have gone
 down.

Files: *
Copyright: 1988, 1990, 1993, 1994, Paul Vixie <paul@vix.com>
           1994, Ian Jackson <ian@davenant.greenend.org.uk>
           1996-2005, Steve Greenland <stevegr@debian.org>
           2005-2014, Javier Fernández-Sanguino Peña <jfs@debian.org>
           2010-2016, Christian Kastner <ckk@debian.org>
           Numerous contributions via the Debian BTS copyright their respective authors
License: Paul-Vixie's-license

Files: database.c
Copyright: 1988, 1990, 1993, 1994 Paul Vixie <paul@vix.com>
           1996-2005, Steve Greenland <stevegr@debian.org>
           2003, Clint Adams <schizo@debian.org>
           2010-2011, Christian Kastner <ckk@debian.org>
           2011, Red Hat, Inc.
License: Paul-Vixie's-license and GPL-2+ and ISC

Files: debian/examples/cron-stats.pl
Copyright: 2006, Javier Fernández-Sanguino Peña <jfs@debian.org>
License: GPL-2+

Files: debian/examples/cron-tasks-review.sh
Copyright: 2011, Javier Fernández-Sanguino Peña <jfs@debian.org>
License: GPL-2+

Files: debian/examples/crontab2english.pl
Copyright: 2001, Sean M. Burke
License: Artistic

License: Paul-Vixie's-license
 Distribute freely, except: don't remove my name from the source or
 documentation (don't take credit for my work), mark your changes (don't
 get me blamed for your possible bugs), don't alter or remove this
 notice.  May be sold if buildable source is provided to buyer.  No
 warranty of any kind, express or implied, is included with this
 software; use at your own risk, responsibility for damages (if any) to
 anyone resulting from the use of this software rests entirely with the
 user.

License: GPL-2+
 This package is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 .
 This package is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <http://www.gnu.org/licenses/>
 .
 On Debian systems, the complete text of the GNU General
 Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

License: Artistic
 This program is free software; you can redistribute it and/or modify it
 under the terms of the "Artistic License" which comes with Debian.
 .
 THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
 WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
 OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .
 On Debian systems, the complete text of the Artistic License
 can be found in "/usr/share/common-licenses/Artistic".

License: ISC
 Permission to use, copy, modify, and distribute this software for any 
 purpose with or without fee is hereby granted, provided that the above
 copyright notice and this permission notice appear in all copies.
 .
 THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR 
 ANY SPECIAL, DIRECT, 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.
                                                                                                                                                                                                           # hidden .placeholder files are never ever intended to be run by anacron

cron-daemon-common: missing-systemd-timer-for-cron-script [etc/cron.d/.placeholder]
cron-daemon-common: missing-systemd-timer-for-cron-script [etc/cron.hourly/.placeholder]
cron-daemon-common: missing-systemd-timer-for-cron-script [etc/cron.daily/.placeholder]
cron-daemon-common: missing-systemd-timer-for-cron-script [etc/cron.weekly/.placeholder]
cron-daemon-common: missing-systemd-timer-for-cron-script [etc/cron.monthly/.placeholder]
cron-daemon-common: missing-systemd-timer-for-cron-script [etc/cron.yearly/.placeholder]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /.
/etc
/etc/cron.d
/etc/cron.d/.placeholder
/etc/cron.daily
/etc/cron.daily/.placeholder
/etc/cron.hourly
/etc/cron.hourly/.placeholder
/etc/cron.monthly
/etc/cron.monthly/.placeholder
/etc/cron.weekly
/etc/cron.weekly/.placeholder
/etc/cron.yearly
/etc/cron.yearly/.placeholder
/etc/crontab
/usr
/usr/share
/usr/share/doc
/usr/share/doc/cron-daemon-common
/usr/share/doc/cron-daemon-common/changelog.Debian.gz
/usr/share/doc/cron-daemon-common/changelog.gz
/usr/share/doc/cron-daemon-common/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/cron-daemon-common
/var
/var/spool
/var/spool/cron
/var/spool/cron/crontabs
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Caml1999I030  $	      3Stdlib__ArrayLabels!t   8 !a @@A@A%arrayH@@ @ @@@@@/arrayLabels.mli^^@@@@@A@&length @!a @@@ @#intA@@ @@ @-%array_lengthAA @@@ a!a@@9A@#get @4!a @@@ @@!@@ @@ @@ @/%array_safe_getBA@@@@?dPP@dP@@XB@#set @S!a @@@ @@@@@ @@
$unitF@@ @@ @@ @@ @/%array_safe_setCAF@@@@@gmhm@@C@$make @]@@ @@!a @@@ @@ @@ @.caml_make_vectBAf@@@@uu@@D@&create @|@@ @@!a @@@ @@ @@ @.caml_make_vectBA@@@@ B66 Cq@0ocaml.deprecated Cqv Cq@	(Use Array.make/ArrayLabels.make instead. Cq Cq@@ Cq Cq@@@@@ Cqs@@E@,create_float @@@ @Ԡ%floatD@@ @@@ @@ @4caml_make_float_vectAA@@@ F F+@@F@*make_float @@@ @@@ @@@ @@ @@ K M
@0ocaml.deprecated L L@	8Use Array.create_float/ArrayLabels.create_float instead. M M
@@ M M
@@@@@
 L@@"G@$init @@@ @!f@	@@ @!a @@ @/@@ @@ @@ @@+ P
X
X, P
X
@@DH@+make_matrix $dimx#@@ @$dimy+@@ @@!a @SW@@ @@@ @@ @@ @@ @@T ZU ZJ@@mI@-create_matrix $dimxL@@ @$dimyT@@ @@!a @|@@ @@@ @@ @@ @@ @@} g^^~ i@0ocaml.deprecated h h@	6Use Array.make_matrix/ArrayLabels.make_matrix instead. i i@@ i i@@@@@ h@@J@&append @!a @@@ @@@@ @@@ @@ @@ @@ l77 l7d@@K@&concat @$listIΠ!a @@@ @@@ @ؠ
@@ @@ @@ r   r F@@L@#sub @!a @@@ @#pos@@ @#len@@ @@@ @@ @@ @@ @@ u u@@M@$copy @!a @@@ @	@@ @@ @@ ~ ~@@/N@$fill @*!a @@@ @#pos@@ @#len!@@ @@@@ @@ @@ @@ @@ @@@ mmA m@@YO@$blit #srcV!a @@@ @'src_posE@@ @#dstk@@ @'dst_posV@@ @ #len^@@ @@@ @@ @@ @@ @@ @@ @@{ {{| @@P@'to_list @!a @	@@ @Р	@@ @
@ @@  @@Q@'of_list @!a @
@@ @	@@ @@ @@  7@@R@$iter !f@!a @e@@ @@ @@Ϡ@@ @p@@ @@ @@ @@  $@@S@%iteri !f@@@ @@!a @@@ @@ @@ @@@@ @@@ @@ @@ @@  @@T@#map !f@!a @!!b @#@ @ @@@ @"@@ @$@ @%@ @&@  @@3U@$mapi !f@@@ @'@!a @*!b @,@ @(@ @)@B@@ @+G@@ @-@ @.@ @/@C kkD k@@\V@)fold_left !f@!a @4@!b @2
@ @0@ @1$init@k@@ @3@ @5@ @6@ @7@g 66h 6u@@W@-fold_left_map !f@!a @?@!b @;
!c @=@ @8@ @9@ @:$init@@@ @< @@ @>@ @@@ @A@ @B@ @C@  S@@X@*fold_right !f@!b @F@!a @H@ @D@ @E@@@ @G$init@ @I@ @J@ @K@   @@Y@%iter2 !f@!a @O@!b @Q~@@ @L@ @M@ @N@@@ @P@@@ @R@@ @S@ @T@ @U@ @V@   @@Z@$map2 !f@!a @Y@!b @[!c @]@ @W@ @X@@@ @Z@@@ @\#@@ @^@ @_@ @`@ @a@       @@8[@'for_all !f@!a @d$boolE@@ @b@ @c@C@@ @e
@@ @f@ @g@ @h@C "3"3D "3"c@@\\@&exists !f@!a @k$@@ @i@ @j@e@@ @l/@@ @m@ @n@ @o@e ##f ##G@@~]@(for_all2 !f@!a @s@!b @uL@@ @p@ @q@ @r@@@ @t@@@ @v^@@ @w@ @x@ @y@ @z@ $$ $$K@@^@'exists2 !f@!a @~@!b @ {@@ @{@ @|@ @}@@@ @@à@@ @ @@ @ @ @ @ @ @ @ @ $$ $%"@@_@#mem @!a @ #setߠ@@ @ @@ @ @ @ @ @ @ %% %%@@`@$memq @!a @ #set@@ @ @@ @ @ @ @ @ @ && &&@@a@(find_opt !f@!a @ @@ @ @ @ @@@ @ &optionJ@@ @ @ @ @ @ @  '1'1! '1'g@@9b@(find_map !f@!a @ !b @ @@ @ @ @ @G@@ @ *@@ @ @ @ @ @ @H(,(,I(,(g@@ac@%split @\!a @ !b @ @ @ @@ @ p@@ @ v@@ @ @ @ @ @ @r),),s),)^@@d@'combine @!a @ @@ @ @!b @ @@ @ 
@ @ @@ @ @ @ @ @ @))))@@e@$sort #cmp@!a @ @@@ @ @ @ @ @ @@@ @ _@@ @ @ @ @ @ @****@@f@+stable_sort #cmp@!a @ @@@ @ @ @ @ @ @@@ @ @@ @ @ @ @ @ @1/,/,1/,/g@@g@)fast_sort #cmp@!a @ @@@ @ @ @ @ @ @@@ @ @@ @ @ @ @ @ @;00;01#@@h@&to_seq @!a @ @@ @ &Stdlib#Seq!t@@ @ @ @ @%B11&B11@@>i@'to_seqi @9!a @ @@ @ #Seq!t.@@ @ ͠@ @ @@ @ @ @ @IG2S2SJG2S2}@@bj@&of_seq @:#Seq!t!a @ @@ @ i	@@ @ @ @ @eM3939fM393Z@@~k@*unsafe_get @y!a @ @@ @ @f@@ @ @ @ @ @ ِ1%array_unsafe_getBAd@@@@W44W44F@@l@*unsafe_set @!a @ @@ @ @@@ @ @
E@@ @ @ @ @ @ @ @ 1%array_unsafe_setCA@@@@@X4G4GX4G4@@m@Ӡ*Floatarray @&create @@@ @ *floatarrayQ@@ @ @ @ 6caml_floatarray_createAA@@@[44[44@@n@&length @@@ @ @@ @ @ @ 2%floatarray_lengthAA@@@\44\45'@@o@#get @,@@ @ @@@ @ &@@ @ @ @ @ @ 4%floatarray_safe_getBAޠ@@@@]5(5*]5(5l@@p@#set @J@@ @ @@@ @ @F@@ @ @@ @ @ @ @ @ @ @ 4%floatarray_safe_setCA@@@@@#^5m5o$^5m5@@<q@*unsafe_get @o@@ @ @@@ @ i@@ @ @ @ @ @ 6%floatarray_unsafe_getBA!@@@@A_55B_56@@Zr@*unsafe_set @@@ @ @=@@ @ @@@ @ @@ @ @ @ @ @ @ @ 6%floatarray_unsafe_setCAE@@@@@f`66
ga6C6c@@s@@@jZ44kb6d6g@t@@@         M   >3Stdlib__ArrayLabels0;B
fmzt5+Stdlib__Seq0Jd8_mJk&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Caml1999T030  m    O2  M  4 3Stdlib__ArrayLabelsР&Stdlib%Array.arrayLabels.mlRjrRjw@@
  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@>@@@!t Q  8 !a @r@A@A%arrayH@@ @q @@@@@)array.mli^^@@@@-Stdlib__Array@A@&length R@!a @p@@ @o#intA@@ @n@ @m-%array_lengthAA @@@!a"a@@ A@#get S@5!a @j@@ @l@!@@ @k@ @i@ @h/%array_safe_getBA@@@@@d::Ad:r@@?B@#set T@T!a @e@@ @g@@@@ @f@
$unitF@@ @d@ @c@ @b@ @a/%array_safe_setCAF@@@@@hmim@@gC@$make U@]@@ @`@!a @_@@ @^@ @]@ @\.caml_make_vectBAf@@@@uu@@D@&create V@|@@ @[@!a @Z@@ @Y@ @X@ @W.caml_make_vectBA@@@@ B   C[@0ocaml.deprecated C[` C[p@	(Use Array.make/ArrayLabels.make instead. C[r C[@@ C[q C[@@@@@ C[]@@E@,create_float W@@@ @Vՠ%floatD@@ @U@@ @T@ @S4caml_make_float_vectAA@@@ F F@@F@*make_float X@@@ @R@@ @Q@@ @P@ @O@ K M@0ocaml.deprecated L L@	8Use Array.create_float/ArrayLabels.create_float instead. M M@@ M	 M@@@@@ L@@	G@$init Y@@@ @N@@@@ @M!a @K@ @L.@@ @J@ @I@ @H@* P
B
B+ P
B
k@@)H@+make_matrix Z@@@ @G@%@@ @F@!a @ENR@@ @D@@ @C@ @B@ @A@ @@@O ZP Z&@@NI@-create_matrix [@D@@ @?@J@@ @>@!a @=sw@@ @<@@ @;@ @:@ @9@ @8@t g88u i@0ocaml.deprecated{ hot| ho@	6Use Array.make_matrix/ArrayLabels.make_matrix instead. i i@@ i i@@@@@ hoq@@J@&append \@!a @5@@ @7@@@ @6@@ @4@ @3@ @2@ l l4@@K@&concat ]@$listIŠ!a @/@@ @1@@ @0Ϡ
@@ @.@ @-@ r r@@L@#sub ^@ߠ!a @)@@ @,@@@ @+@@@ @*@@ @(@ @'@ @&@ @%@ uUU uU@@M@$copy _@!a @#@@ @$
	@@ @"@ @!@	 ~
 ~@@N@$fill `@!a @@@ @ @	@@ @@@@ @@@@ @@ @@ @@ @@ @@/ 330 3b@@.O@$blit a@C!a @@@ @@/@@ @@T@@ @@<@@ @@B@@ @ @@ @@ @@ @@ @@ @
@ @@` 77a qy@@_P@'to_list b@t!a @
@@ @	@@ @	@ @@y NNz No@@xQ@'of_list c@Π!a @@@ @	@@ @@ @@  @@R@$iter d@@!a @G@@ @@ @@@@ @ R@@ @@ @@ @@  @@S@%iteri e@@@@ @@!a @m@@ @@ @@ @@ؠ@@ @x@@ @@ @@ @@ VV V@@T@#map f@@!a @!b @@ @@@@ @@@ @@ @@ @@  K@@U@$mapi g@@@@ @@!a @!b @@ @@ @@@@ @$@@ @@ @@ @@  ! 2@@V@)fold_left h@@!a @@!b @
@ @@ @@@D@@ @@ @@ @@ @@@ A @@?W@-fold_left_map i@@!a @@!b @
!c @@ @@ @@ @@@l@@ @u@@ @@ @@ @@ @@ @@q r @@pX@*fold_right j@@!b @@!a @@ @@ @@@@ @@

@ @@ @@ @@ aa a@@Y@%iter2 k@@!a @@!b @L@@ @@ @@ @@@@ @@@@ @^@@ @@ @@ @@ @@ II I@@Z@$map2 l@@!a @@!b @!c @@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@  F F  F @@[@'for_all m@@!a @$boolE@@ @@ @@@@ @
@@ @@ @@ @@ !! !"@@
\@&exists n@@!a @"@@ @@ @@.@@ @-@@ @@ @@ @@. ""/ ""@@-]@(for_all2 o@@!a @@!b @H@@ @@ @@ @@T@@ @@[@@ @Z@@ @@ @@ @@ @@[ ##\ ##@@Z^@'exists2 p@@!a @@!b @u@@ @@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@ $z$z $z$@@_@#mem q@!a @@
@@ @@@ @@ @@ @@ %N%N %N%n@@`@$memq r@!a @@
@@ @@@ @@ @@ @@ && &&?@@a@(find_opt s@@!a @@@ @@ @@ܠ@@ @&optionJ@@ @@ @~@ @}@ && &&@@b@(find_map t@@!a @z!b @x@@ @|@ @{@@@ @y(@@ @w@ @v@ @u@''''@@c@%split u@!a @p!b @r@ @t@@ @s-@@ @o3@@ @q@ @n@ @m@/((0((@@.d@'combine v@C!a @i@@ @l@N!b @j@@ @kW
@ @h@@ @g@ @f@ @e@W)N)NX)N)@@Ve@$sort w@@!a @a@T@@ @d@ @c@ @b@y@@ @`@@ @_@ @^@ @]@y*D*Dz*D*t@@xf@+stable_sort x@@!a @Y@v@@ @\@ @[@ @Z@@@ @X;@@ @W@ @V@ @U@1..1..@@g@)fast_sort y@@!a @Q@@@ @T@ @S@ @R@@@ @P]@@ @O@ @N@ @M@;0k0k;0k0@@h@&to_seq z@Ѡ!a @K@@ @L&Stdlib#Seq!t@@ @J@ @I@B11B119@@i@'to_seqi {@!a @G@@ @H#Seq!t@@ @F@ @E@@ @D@ @C@ G11G11@@j@&of_seq |@:#Seq!t!a @A@@ @B 	@@ @@@ @?@M22M22@@k@*unsafe_get }@0!a @<@@ @>@@@ @=@ @;@ @:1%array_unsafe_getBA@@@@;W33<W33@@:l@*unsafe_set ~@O!a @7@@ @9@;@@ @8@
@@ @6@ @5@ @4@ @31%array_unsafe_setCA?@@@@@aX33bX34
@@`m@Ӡ*Floatarray @&create @\@@ @2*floatarrayQ@@ @1@ @06caml_floatarray_createAA`@@@[4'4)[4'4g@@n@&length @@@ @/y@@ @.@ @-2%floatarray_lengthAAw@@@\4h4j\4h4@@o@#get @,@@ @,@@@ @+@@ @*@ @)@ @(4%floatarray_safe_getBA@@@@]44]44@@p@#set @J@@ @'@@@ @&@@@ @%t@@ @$@ @#@ @"@ @!4%floatarray_safe_setCA@@@@@^44^456@@q@*unsafe_get @o@@ @ @@@ @@@ @@ @@ @6%floatarray_unsafe_getBAנ@@@@_5759_575@@r@*unsafe_set @@@ @@@@ @@?@@ @@@ @@ @@ @@ @6%floatarray_unsafe_setCA@@@@@`55a55@@s@@@!Z44"b55@ t@@@@mz@o;9A@#mP"ߠfB*ՠaA̠T3hCҠrO4@-Stdlib__Array@=:@@@@r A  8 q@A@Amu@@ @xji@@h@@@dA@b @a`@@ @w\@@ @v@ @uYT@Q@P @ON@@ @t@J@@ @sT@ @r@ @qID@A@@ @?>@@ @p@:@@ @o@F9@@ @n@ @m@ @l@ @k60@-@, @+@@ @j@*&-@@ @i@ @h@ @g% @@ @@@ @f@@@ @e@ @d@ @c
@ @@@ @b@@ @a@@ @`@ @_@@ @@@ @^@@ @]@@ @\@ @[@@ @@@ @Z@@@@ @Y@ @X@@ @W@ @V@ @U@@@ @@@ @T@@@ @S@@@ @R@@ @Q@ @P@ @O@ @N@@@ @@@ @M@@@ @L@@@ @K@@ @J@ @I@ @H@ @G@@ @@@ @F@@@ @E@@ @D@ @C@ @B@@@ @~{z@@ @A@@ @@v@@ @?@ @>@u@r@q @po@@ @=@k@@ @<@j@@ @;i}@@ @:@ @9@ @8@ @7@h@e@d @cb@@ @6^f@@ @5@ @4@]@Z@Y @XW@@ @3@S@@ @2@R@@ @1@dQ@@ @0@ @/@ @.@ @-@ @,@P@M@L @KJ@@ @+@F@@ @*@EU@@ @)@D@@ @(@C@@ @'B@@ @&@ @%@ @$@ @#@ @"@ @!@A@>@= @<;@@ @ 7?@@ @@ @@6@3@2 @10@@ @,4@@ @@ @@+@(@' @@&"@@ @@ @@!.@@ @ @@ @@ @@ @@@@ @@@@ @@@@ @@ @@ @@!@@ @@@ @@ @@ @
@@@ @@
	@ @@@@ @@@ @
@ @	@ @@@ @ @@@@ @@@ @@ @@@@ @@@ @@ @@ @@@@ @@@@ @ @ @@@@@ @@ @@ @@ @@@@ @@@@ @@ @@ @@@Ԡ@@ @Ӡ@@ @@ @@ @@ @@ @@@@ @@@@ @@ @@Š@@ @@@ @@ @@ @@@@ @@@@@ @@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@@@ @@@@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@@@ @@@@ @@ @@@@ @@@ @@ @@ @@@@ @@@@ @@ @@@@ @@@ @@ @@ @@@@ @@@|x@@ @@ @@ @@w@@ @@v@@ @u@@ @@ @@ @@ @@t@q@p @@o@kg@@ @@ @@ @@fy@@ @@ey@@ @d@@ @@ @@ @@ @@c@`@_ @^@Zc@@ @Y@@ @@ @@ @@X@U@T @S@OX@@ @N@@ @@ @@ @@M@J@I @@HD@@ @@ @@CP@@ @BT@@ @@ @@ @@?@<@; @@:65@@ @@ @@1C@@ @0?@@ @@ @@ @@/@,@+ @*)%@ @@@ @!1@@ @ 1@@ @@ @@ @@@@ @@@ @@@@ @&@ @@@ @@ @@ @@@@ @@
@@@ @@ @@ @@@@ @@@ @@ @@ @@@ @ @@@ @@ @@ @@ @@@@ @@@ @@ @@ @@@@ @@@@@ @@ @@ @@@@ @@@ @@ @@ @@@@ @@@ @ݠ@@ @@ @@@@ @נ@@ @Ѡ@@ @@ @@@ @@ @@@@ @ɠ@@ @Ġ@@ @~@ @}@@@ @@@ @|@@@ @{@ @z@ @y@@ @@@ @x@@@ @w@@@ @v@ @u@ @t@ @s@@ӱ A@@@@@URjjT@@U@R@wi[L=*ؠ{naN6%Рv[@2$ˠ}gXJ7@  0 @ð
	 ~}feNM:9('~}lkUTCB%$}|nm_^JI43zyf@e@@@l@@ @
@k@@ @
@j@@ @
i@@ @
@ @
@ @
@ @
hb@_@*floatarrayQ@@ @@#intA@@ @~@%floatD@@ @}$unitF@@ @|@ @{@ @z@ @y6%floatarray_unsafe_setCA @@@@@/arrayLabels.mli`66
a6C6c@@3Stdlib__ArrayLabelss@@@ @
@@@ @
@@ @
@ @
@ @
@@<@@ @@:@@ @6@@ @@ @@ @6%floatarray_unsafe_getBA.@@@@,_55-_56@@+r@@@ @
@@@ @
@@@ @
@@ @
@ @
@ @
@ @
@
@k@@ @@i@@ @@g@@ @e@@ @@ @@ @@ @4%floatarray_safe_setCAc@@@@@b^5m5oc^5m5@@aq@n@@ @
@m@@ @
l@@ @
@ @
@ @
kf@c@@@ @@@@ @@@ @@ @@ @4%floatarray_safe_getBA@@@@]5(5*]5(5l@@p@@@ @
@@ @
@ @
@@@@ @@@ @@ @2%floatarray_lengthAA@@@\44\45'@@o@@@ @
@@ @
@ @
@@@@ @@@ @@ @6caml_floatarray_createAAˠ@@@[44[44@@n@%arrayH!a @@@ @@@@ @@
@@ @@ @@ @@ @1%array_unsafe_setCA@@@@@X4G4GX4G4@@m@&!a @@@ @@@@ @@ @@ @1%array_unsafe_getBA
@@@@W44W44F@@
l@&Stdlib#Seq!t!a @@@ @R	@@ @@ @@(M3939)M393Z@@'k@`!a @@@ @&#Seq!t_@@ @@ @@@ @@ @@JG2S2SKG2S2}@@IjJ@!a @@@ @H#Seq!t@@ @@ @@dB11eB11@@ciz#cmp@!a @@@@ @@ @@ @@@@ @@@ @@ @@ @@;00;01#@@h#cmp@!a @@@@ @@ @@ @@Π@@ @@@ @@ @@ @@1/,/,1/,/g@@g#cmp@!a @@@@ @@ @@ @@@@ @@@ @@ @@ @@****@@f$@!a @@@ @@
!b @@@ @
@ @@@ @@ @@ @@))))@@ed@(!a @Ԡ!b @@ @@@ @<@@ @ӠB@@ @@ @@ @@),),),)^@@d!f@!a @&optionJ!b @@@ @@ @@e@@ @@@ @@ @@ @@@(,(,A(,(g@@?c!f@!a @$boolE@@ @@ @@@@ @5@@ @@ @@ @@c '1'1d '1'g@@bb@!a @#set@@ @(@@ @@ @@ @@} &&~ &&@@|a:@!a @#set@@ @B@@ @@ @@ @@ %% %%@@`p!f@!a @@!b @]@@ @@ @@ @@@@ @@@@ @o@@ @@ @@ @@ @@ $$ $%"@@_!f@!a @@!b @@@ @@ @@ @@@@ @@@@ @@@ @ @ @@ @@ @@ $$ $$K@@^!f@!a @@@ @@ @
@7@@ @@@ @
@ @	@ @@ ## ##G@@].!f@!a @@@ @@ @@W@@ @@@ @@ @@ @@1 "3"32 "3"c@@0\h!f@!a @@!b @!c @@ @ @ @@}@@ @@@@ @@@ @@ @@ @@ @@_   `   @@^[!f@!a @(@!b @&@@ @+@ @*@ @)@@@ @'@@@ @%@@ @$@ @#@ @"@ @!@   @@Z!f@!b @1@!a @/@ @3@ @2@Ԡ@@ @0$init@ @.@ @-@ @,@   @@Y1!f@!a @8@!b @<
!c @:@ @?@ @>@ @=$init@@@ @; @@ @9@ @7@ @6@ @5@ @4@  S@@Xv!f@!a @C@!b @E
@ @G@ @F$init@-@@ @D@ @B@ @A@ @@@ 66 6u@@W!f@+@@ @P@!a @M!b @K@ @O@ @N@O@@ @LT@@ @J@ @I@ @H@* kk+ k@@)V!f@!a @V!b @T@ @W@p@@ @Uu@@ @S@ @R@ @Q@K L @@JU"!f@s@@ @`@!a @\o@@ @_@ @^@ @]@@@ @[z@@ @Z@ @Y@ @X@q r @@pT\!f@!a @e@@ @g@ @f@@@ @d@@ @c@ @b@ @a@  $@@S@$listI!a @j@@ @kԠ	@@ @i@ @h@  7@@R@!a @n@@ @o"	@@ @m@ @l@  @@Q#src!a @y@@ @{'src_pos@@ @z#dst@@ @x'dst_pos@@ @w#len
@@ @v@@ @u@ @t@ @s@ @r@ @q@ @p@ {{ @@P<@2!a @@@ @#pos+@@ @#len3@@ @@+@@ @@ @@ @~@ @}@ @|@" mm# m@@!Or@Z!a @@@ @c	@@ @@ @@9 ~: ~@@8N@q!a @@@ @#posj@@ @#lenr@@ @@@ @@ @@ @@ @@` ua u@@_M@Ϡ!a @@@ @@@ @
@@ @@ @@| r  } r F@@{L	
@!a @@@ @@@@ @Ġ@@ @@ @@ @@ l77 l7d@@K	@$dimx@@ @$dimy@@ @@!a @@@ @@@ @@ @@ @@ @@ g^^ i@0ocaml.deprecated h h@	6Use Array.make_matrix/ArrayLabels.make_matrix instead. i i@@ i i@@@@@ h@@J	$dimx@@ @$dimy@@ @@!a @$(@@ @@@ @@ @@ @@ @@ Z  ZJ@@I	@#@@ @!f@-@@ @!a @@ @I@@ @@ @@ @@ P
X
X  P
X
@@H
@C@@ @[C@@ @@@ @@ @@5 K6 M
@0ocaml.deprecated< L= L@	8Use Array.create_float/ArrayLabels.create_float instead.G MH M
@@J MK M
@@@@@M L@@KG
>@p@@ @p@@ @@@ @@ @4caml_make_float_vectAAi@@@f Fg F+@@eF
g@@@ @@!a @@@ @@ @@ @.caml_make_vectBA@@@@ B66 Cq@0ocaml.deprecated Cqv Cq@	(Use Array.make/ArrayLabels.make instead. Cq Cq@@ Cq Cq@@@@@ Cqs@@E
@@@ @@!a @ܠ@@ @@ @@ @.caml_make_vectBA@@@@uu@@D
@!a @@@ @@@@ @@
@@ @@ @@ @@ @Ő/%array_safe_setCAܠ@@@@@mm@@C@!a @@@ @@
@@ @@ @@ @̐/%array_safe_getBA@@@@dPPdP@@B8@0!a @@@ @%@@ @@ @ѐ-%array_lengthAA@@@aa@@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H                Jacques Garrigue, Kyoto University RIMS                 #E44$E4@	H                                                                        )F*F@	H   Copyright 2001 Institut National de Recherche en Informatique et     /G0G@	H     en Automatique.                                                    5H6Hg@	H                                                                        ;Ihh<Ih@	H   All rights reserved.  This file is distributed under the terms of    AJBJ@	H   the GNU Lesser General Public License version 2.1, with the          GKHKN@	H   special exception on linking described in the file LICENSE.          MLOONLO@	H                                                                        SMTM@	H************************************************************************YNZN5@	- Module [ArrayLabels]: labelled Array module _P77`P7h@@  P +../ocamlopt0-strict-sequence(-absname"-w8+a-4-9-41-42-44-45-48-70"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal,-safe-string/-strict-formats2-function-sections)-nolabels.-no-alias-deps"-o7stdlib__ArrayLabels.cmx"-ctu(./stdlib @0!׆S7 D]S  0 vuuvvvvv@t@@8CamlinternalFormatBasics0ĵ'(jdǠ0-&fºnr39tߠސ0XUJө
	ƿ80;B
fmzt5+Stdlib__Seq0Jd8_mJk@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Caml1999I030       !  .Stdlib__Atomic!t Z  8 !a @ @A@A@O@B@@@*atomic.mli^^@@@@@A@$make [@!a @ @@ @ @ @ @a""a"7@@&A@#get \@!a @ @@ @ @ @ @(doo)do@@9B@#set ]@#!a @ @@ @ @$unitF@@ @ @ @ @ @ @CgDg@@TC@(exchange ^@>!a @ @@ @ @@ @ @ @ @Xj##Yj#B@@iD@/compare_and_set _@S!a @ @@ @ @@	$boolE@@ @ @ @ @ @ @ @ @uq	W	Wvq	W	@@E@-fetch_and_add `@p#intA@@ @ @@ @ @	@@ @ 
@@ @ @ @ @ @ @u

u

2@@F@$incr a@@@ @ @@ @ j@@ @ @ @ @x
s
sx
s
@@G@$decr b@6@@ @ @@ @ @@ @ @ @ @{

{

@@H@@   l      :   ..Stdlib__Atomic0#e/Gyt&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@            @@Caml1999T030  &v    Q     4 .Stdlib__Atomic*ocaml.text&_none_@@ A
  * This module provides a purely sequential implementation of the
    concurrent atomic references provided by the Multicore OCaml
    standard library:

    https://github.com/ocaml-multicore/ocaml-multicore/blob/parallel_minor_gc/stdlib/atomic.mli

    This sequential implementation is provided in the interest of
    compatibility: when people will start writing code to run on
    Multicore, it would be nice if their use of Atomic was
    backward-compatible with older versions of OCaml without having to
    import additional compatibility layers. *atomic.mliQ[@@@@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@3@@@5extension_constructorP  8 @@@A@@@@@7@@@#intA  8 @@@A@@@@@;@A@$charB  8 @@@A@@@@@?@A@&stringO  8 @@@A@@@@@C@@@%floatD  8 @@@A@@@@@G@@@$boolE  8 @@%false^@@Q@$true_@@W@@@A@@@@@X@A@$unitF  8 @@"()`@@b@@@A@@@@@c@A@
#exnG  8 @@AA@@@@@g@@@%arrayH  8 @ @O@A@A@ @@@@@p@@@$listI  8 @ @P@A"[]a@@}@"::b@@ @Q@@@
@@A@Y@@@@@@@@&optionJ  8 @ @S@A$Nonec@@@$Somed@@@@@A@Y@@@@@@@@&lazy_tN  8 @ @U@A@A@Y@@@@@@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A͠=ocaml.warn_on_literal_patternѐ@@.Assert_failure\    @@ @X@@Aݠ@
0Division_by_zeroY    '@@@A堰@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@A)(@.Sys_blocked_io[    @@@@A10@)Not_foundV    H@@@A9	8	@'FailureU    P@L@@ABA@0Invalid_argumentT    Y@U@@AKJ@.Stack_overflowZ    b@@@A S#R#@-Out_of_memoryS    j@@@A([+Z+@-Match_failureR    r@qmn@ @c@@A6i9h9@
%bytesC  8 @@@A@@@@@=@@@&Stdlib@A6A  ( !t QA>^?^@А!a @  0 EDDEEEEE@D  8 @ @@A@A@G@B@@@Q^@)ocaml.docb	8 An atomic (mutable) reference to a value of type ['a]. _]`]@@@@@@@@@w@@Ac^d^@@B@@  8 #@A@A@O@B@@@@@	@@A@@g,@$make Rsa"&ta"*@б@А!a @B@  0 |{{|||||@{G@Aa"-a"/@@гM!ta"6a"7@А!aa"3a"5@@@@@ @
@@@!@ @@@@a""@M= Create an atomic reference. ``!@@@@@@@A@"@/#get Sdosdov@б@г!tdo|do}@А!a @#B@  0 @N_2@Adoydo{@@@
@@ @ 	@@А!a
dodo@@@
@ @!@@@doo@	0 Get the current value of the atomic reference. c99c9n@@@@@@@B@@%#set Tgg@б@гƠ!tgg@А!a @+B@$  0 @D_2@Agg@@@
@@ @&	@@б@А!ag g@@гנ$unit(g)g@@	@@ @'@@@&@ @(!@@@@ @)$"@@@6g@吠	+ Set a new value for the atomic reference. BfCf@@@@@@@ZC@@7(exchange UNj#'Oj#/@б@г!tYj#5Zj#6@А!a @2B@,  0 a``aaaaa@Vq2@Agj#2hj#4@@@
@@ @.	@@б@А!atj#:uj#<@@А!azj#@{j#B@@@@ @/@@@@ @0@@@j##
@3	I Set a new value for the atomic reference, and return the current value. ii"@@@@@@@D@@0/compare_and_set Vq	W	[q	W	j@б@гi!tq	W	pq	W	q@А!a @;B@3  0 @Oj2@Aq	W	mq	W	o@@@
@@ @5	@@б@А!aq	W	uq	W	w@@б@А!aq	W	{q	W	}@@г$boolq	W	q	W	@@	@@ @6&@@@.@ @7)@@@1@ @8,@@@*@ @9/-@@@q	W	W@
  
 [compare_and_set r seen v] sets the new value of [r] to [v] only
    if its current value is physically equal to [seen] -- the
    comparison and the set occur atomically. Returns [true] if the
    comparison succeeded (so the set happened) and [false]
    otherwise. lDDp	E	V@@@@@@@E@ @B-fetch_and_add Wu

u

@б@гɠ!tu

#u

$@г᠐#intu

u

"@@	@@ @<  0 @e6@A@@@	@@ @>
@@б@г#int'u

((u

+@@	@@ @?@@г#int4u

/5u

2@@	@@ @@#@@@@ @A&@@@&@ @B)/@@@Bu

@񐠠	~ [fetch_and_add r n] atomically increments the value of [r] by [n],
    and returns the current value (before the increment). Ns		Ot	

@@@@@@@fF@@<$incr XZx
s
w[x
s
{@б@г'!tex
s
fx
s
@г?#intox
s
~px
s
@@	@@ @C  0 qppqqqqq@_~6@A@@@	@@ @E
@@г2$unitx
s
x
s
@@	@@ @F@@@@ @G@@@x
s
s@=	9 [incr r] atomically increments the value of [r] by [1]. w
4
4w
4
r@@@@@@@G@@*$decr Y{

{

@б@гs!t{

{

@г#int{

{

@@	@@ @H  0 @Ml6@A@@@	@@ @J
@@г~$unit{

{

@@	@@ @K@@@@ @L@@@{

@	9 [decr r] atomically decrements the value of [r] by [1]. z

z

@@@@@@@H@@*@A@R@>@@r@^@ @n@Z$@@  0 @=\&@A@	H************************************************************************A@@A@ L@	H                                                                        B M M	B M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H             Stephen Dolan, University of Cambridge                     E44E4@	H             Gabriel Scherer, projet Partout, INRIA Paris-Saclay         F!F@	H                                                                        &G'G@	H   Copyright 2020 Institut National de Recherche en Informatique et     ,H-Hg@	H     en Automatique.                                                    2Ihh3Ih@	H                                                                        8J9J@	H   All rights reserved.  This file is distributed under the terms of    >K?KN@	H   the GNU Lesser General Public License version 2.1, with the          DLOOELO@	H   special exception on linking described in the file LICENSE.          JMKM@	H                                                                        PNQN5@	H************************************************************************VO66WO6@
  +* This module provides a purely sequential implementation of the
    concurrent atomic references provided by the Multicore OCaml
    standard library:

    https://github.com/ocaml-multicore/ocaml-multicore/blob/parallel_minor_gc/stdlib/atomic.mli

    This sequential implementation is provided in the interest of
    compatibility: when people will start writing code to run on
    Multicore, it would be nice if their use of Atomic was
    backward-compatible with older versions of OCaml without having to
    import additional compatibility layers. \	9* An atomic (mutable) reference to a value of type ['a].  >* Create an atomic reference. 	1* Get the current value of the atomic reference. x	,* Set a new value for the atomic reference. &	J* Set a new value for the atomic reference, and return the current value. ۠
  * [compare_and_set r seen v] sets the new value of [r] to [v] only
    if its current value is physically equal to [seen] -- the
    comparison and the set occur atomically. Returns [true] if the
    comparison succeeded (so the set happened) and [false]
    otherwise. ~	* [fetch_and_add r n] atomically increments the value of [r] by [n],
    and returns the current value (before the increment). #	:* [incr r] atomically increments the value of [r] by [1]. ڠ	:* [decr r] atomically decrements the value of [r] by [1]. @  D )../ocamlc0-strict-sequence(-absname"-w8+a-4-9-41-42-44-45-48-70"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal,-safe-string/-strict-formats"-o2stdlib__Atomic.cmi"-c(./stdlib @0
.p/q:  0 @@@8CamlinternalFormatBasics0ĵ'(jdǠ&Stdlib0-&fºnr39tߠ0#e/Gyt@0#e/GytA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Caml1999I030  8<  
  (  '-Stdlib__Bytes&length @%bytesC@@ @#intA@@ @@ @-%bytes_lengthAA @@@)bytes.mliy		y	
@@@@#get @@@ @@@@ @$charB@@ @@ @@ @/%bytes_safe_getBA!@@@@!|
]
]"|
]
@@>A@#set @=@@ @@=@@ @@"@@ @$unitF@@ @@ @@ @ @ @/%bytes_safe_setCAG@@@@@H AI AV@@eB@&create @^@@ @h@@ @@ @1caml_create_bytesAA`@@@_ F` F$@@|C@$make @u@@ @@Z@@ @@@ @@ @@ @	@x Ky K
@@D@$init @@@ @
@@@@ @y@@ @@ @
@@ @@ @@ @@ P

 P

@@E@%empty @@ @@ V V@@F@$copy @@@ @@@ @@ @@ Y Y@@G@)of_string @&stringO@@ @@@ @@ @@ ]ee ]e@@H@)to_string @@@ @@@ @@ @@ a a@@I@#sub @@@ @@@@ @@@@ @@@ @@ @@ @ @ @!@ eWW eW}@@J@*sub_string @@@ @"@@@ @#@ @@ @$W@@ @%@ @&@ @'@ @(@ l{{ l{@@:K@&extend @9@@ @)@9@@ @*@?@@ @+I@@ @,@ @-@ @.@ @/@< o= o@@YL@$fill @X@@ @0@X@@ @1@^@@ @2@C@@ @3!@@ @4@ @5@ @6@ @7@ @8@a yb y@@~M@$blit @}@@ @9@}@@ @:@@@ @;@@@ @<@@@ @=L@@ @>@ @?@ @@@ @A@ @B@ @C@  @@N@+blit_string @@@ @D@@@ @E@@@ @F@@@ @G@@@ @Hw@@ @I@ @J@ @K@ @L@ @M@ @N@  '@@O@&concat @@@ @O@$listI@@ @P@@ @Q@@ @R@ @S@ @T@  @@P@#cat @@@ @U@@@ @V@@ @W@ @X@ @Y@  @@
Q@$iter @@@@ @Z@@ @[@ @\@@@ @]@@ @^@ @_@ @`@  	@@,R@%iteri @@'@@ @a@@@ @b@@ @c@ @d@ @e@=@@ @f@@ @g@ @h@ @i@4 5 @@QS@#map @@+@@ @j/@@ @k@ @l@\@@ @m`@@ @n@ @o@ @p@S qqT q@@pT@$mapi @@k@@ @q@P@@ @rT@@ @s@ @t@ @u@@@ @v@@ @w@ @x@ @y@x XXy X@@U@)fold_left @@!a @~@u@@ @z
@ @{@ @|@@@@ @}@ @@ @@ @@ FF F}@@V@*fold_right @@@@ @@!a @@ @@ @@@@ @@@ @@ @@ @@  N@@W@'for_all @@@@ @$boolE@@ @@ @@@@ @@@ @@ @@ @@   @@X@&exists @@@@ @!@@ @@ @@@@ @+@@ @@ @@ @@  z z  z @@Y@$trim @@@ @@@ @@ @@	 !!
 !!0@@&Z@'escaped @%@@ @)@@ @@ @@ !! !"@@9[@%index @8@@ @@@@ @<@@ @@ @@ @@5 #q#q6 #q#@@R\@)index_opt @Q@@ @@0@@ @&optionJ[@@ @@@ @@ @@ @@U $$V $$E@@r]@&rindex @q@@ @@P@@ @u@@ @@ @@ @@n $$o $$@@^@*rindex_opt @@@ @@i@@ @9@@ @@@ @@ @@ @@ %% %%@@_@*index_from @@@ @@@@ @@@@ @@@ @@ @@ @@ @@ &?&? &?&k@@`@.index_from_opt @@@ @@@@ @@@@ @|@@ @@@ @@ @@ @@ @@ '' ''@@a@+rindex_from @@@ @@@@ @@@@ @@@ @@ @@ @@ @@ )) ))A@@b@/rindex_from_opt @
@@ @@
@@ @@@@ @@@ @@@ @@ @@ @@ @@****@@/c@(contains @.@@ @@
@@ @`@@ @@ @@ @@+
,,,
,,:@@Hd@-contains_from @G@@ @@G@@ @@,@@ @@@ @@ @@ @@ @@J,t,tK,t,@@ge@.rcontains_from @f@@ @@f@@ @@K@@ @@@ @@ @@ @@ @@i--j--@@f@)uppercase @@@ @@@ @@ @@|.t.t}..@0ocaml.deprecated....@	>Use Bytes.uppercase_ascii/BytesLabels.uppercase_ascii instead.....@@....@@@@@..@@g@)lowercase @@@ @@@ @@ @@$//&00\@0ocaml.deprecated%00%00@	>Use Bytes.lowercase_ascii/BytesLabels.lowercase_ascii instead.&00&00Z@@&00&00[@@@@@%00@@h@*capitalize @@@ @@@ @@ @@,1P1P.11@0ocaml.deprecated-1p1u-1p1@	@Use Bytes.capitalize_ascii/BytesLabels.capitalize_ascii instead..11.11@@.11.11@@@@@-1p1r@@i@,uncapitalize @@@ @@@ @@ @@322523 @0ocaml.deprecated422422@	DUse Bytes.uncapitalize_ascii/BytesLabels.uncapitalize_ascii instead.522
523@@522523@@@@@422@@.j@/uppercase_ascii @-@@ @1@@ @@ @@$:33%:34@@Ak@/lowercase_ascii @@@@ @D@@ @@ @@7?448?44@@Tl@0capitalize_ascii @S@@ @W@@ @@ @@JD55KD55@@gm@2uncapitalize_ascii @f@@ @j@@ @@ @@]I6R6R^I6R6y@@zn@!t   8 @@@Ax@@ @@@@@kN77lN77(@@@@oA@'compare @@@ @@@@ @@@ @ @ @@ @@Q7Z7ZQ7Z7t@@p@%equal @@@ @@@@ @@@ @@ @@ @@W8y8yW8y8@@q@+starts_with &prefix@@ @@@@ @	@@ @
@ @@ @@[88\99N@@r@)ends_with &suffix@@ @
@@@ @@@ @@ @@ @@b99c9:@@s@0unsafe_to_string @@@ @@@ @@ @@r<K<Kr<K<q@@ t@0unsafe_of_string @,@@ @@@ @@ @@I
I
I
I0@@u@-split_on_char @@@ @@@@ @C @@ @@@ @@ @@ @@PgPgPgP@@1v@&to_seq @@@ @&Stdlib#Seq!t@@ @@@ @ @ @!@1RR2RR@@Nw@'to_seqi @@@ @"#Seq!tT@@ @$8@@ @#@ @%@@ @&@ @'@S SbSbT SbS@@px@&of_seq @<#Seq!tO@@ @(@@ @)@@ @*@ @+@mSSnST@@y@)get_uint8 @@@ @,@@@ @-@@ @.@ @/@ @0@%XX%XY
@@z@(get_int8 @@@ @1@@@ @2@@ @3@ @4@ @5@*YrYr*YrY@@{@-get_uint16_ne @@@ @6@@@ @7@@ @8@ @9@ @:@/YY/YZ@@|@-get_uint16_be @@@ @;@@@ @<@@ @=@ @>@ @?@5ZZ5ZZ@@}@-get_uint16_le @@@ @@@@@ @A@@ @B@ @C@ @D@;[9[9;[9[`@@~@,get_int16_ne @@@ @E@@@ @F
@@ @G@ @H@ @I@A[[A[\@@ @,get_int16_be @@@ @J@@@ @K#@@ @L@ @M@ @N@G\{\{G\{\@@9 @@,get_int16_le @8@@ @O@8@@ @P<@@ @Q@ @R@ @S@5M]]6M]]=@@R A@,get_int32_ne@Q@@ @T@Q@@ @U%int32L@@ @V@ @W@ @X@PS]]QS]]@@m B@,get_int32_be@l@@ @Y@l@@ @Z@@ @[@ @\@ @]@iY^P^PjY^P^x@@ C@,get_int32_le@@@ @^@@@ @_4@@ @`@ @a@ @b@_^^_^_@@ D@,get_int64_ne@@@ @c@@@ @d%int64M@@ @e@ @f@ @g@e__e__@@ E@,get_int64_be@@@ @h@@@ @i@@ @j@ @k@ @l@k``k``C@@ F@,get_int64_le@@@ @m@@@ @n4@@ @o@ @p@ @q@q``q``@@ G@)set_uint8@@@ @r@@@ @s@@@ @t@@ @u@ @v@ @w@ @x@waLaLwaLaw@@ H@(set_int8@
@@ @y@
@@ @z@@@ @{@@ @|@ @}@ @~@ @@
}aa}ab@@* I@-set_uint16_ne	@)@@ @ @)@@ @ @/@@ @ @@ @ @ @ @ @ @ @ @,bb-bb@@I J@-set_uint16_be
@H@@ @ @H@@ @ @N@@ @ @@ @ @ @ @ @ @ @ @Kc<c<Lc<ck@@h K@-set_uint16_le@g@@ @ @g@@ @ @m@@ @ *@@ @ @ @ @ @ @ @ @jcckcd@@ L@,set_int16_ne@@@ @ @@@ @ @@@ @ I@@ @ @ @ @ @ @ @ @dddd@@ M@,set_int16_be
@@@ @ @@@ @ @@@ @ h@@ @ @ @ @ @ @ @ @eWeWeWe@@ N@,set_int16_le@@@ @ @@@ @ @@@ @ @@ @ @ @ @ @ @ @ @ffff4@@ O@,set_int32_ne@@@ @ @@@ @ @@@ @ @@ @ @ @ @ @ @ @ @ffff@@	 P@,set_int32_be@	@@ @ @	@@ @ @@@ @ @@ @ @ @ @ @ @ @ @	gege	geg@@	" Q@,set_int32_le@	!@@ @ @	!@@ @ @@@ @ @@ @ @ @ @ @ @ @ @	$hh	%hh?@@	A R@,set_int64_ne@	@@@ @ @	@@@ @ @@@ @ 	@@ @ @ @ @ @ @ @ @	Chh	Dhh@@	` S@,set_int64_be@	_@@ @ @	_@@ @ @@@ @ 	"@@ @ @ @ @ @ @ @ @	biiii	ciii@@	 T@,set_int64_le@	~@@ @ @	~@@ @ @@@ @ 	A@@ @ @ @ @ @ @ @ @	jj	jjC@@	 U@*unsafe_get@	@@ @ @	@@ @ 	@@ @ @ @ @ @ ؐ1%bytes_unsafe_getBA	@@@@	k
k
	k
kM@@	 V@*unsafe_set@	@@ @ @	@@ @ @	@@ @ 	~@@ @ @ @ @ @ @ @ ߐ1%bytes_unsafe_setCA	à@@@@@	kNkN	kNk@@	 W@+unsafe_blit@	@@ @ @	@@ @ @	@@ @ @	@@ @ @	@@ @ 	@@ @ @ @ @ @ @ @ @ @ @ @ /caml_blit_bytesE@	@@@@@@@	kk	kk@'noalloc	kk	kk@@
kk@@
 X@2unsafe_blit_string@	J@@ @ @
@@ @ @
)@@ @ @
)@@ @ @
/@@ @ 	@@ @ @ @ @ @ @ @ @ @ @ @ 0caml_blit_stringE@
1@@@@@@@
4l l 
5lMlo@'noalloc
;lMlg
<lMln@@
?lMld@@
[ Y@+unsafe_fill@
Z@@ @ @
Z@@ @ @
`@@ @ @
E@@ @ 
#@@ @ @ @ @ @ @ @ @ @ /caml_fill_bytesD@
h@@@@@@
jlplp
kll@'noalloc
qll
rll@@
ull@@
 Z@@         L   =-Stdlib__Bytes0G`çVYXq+Stdlib__Seq0Jd8_mJk&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Caml1999Y030       G    ( ,Stdlib__Weak@0tqv}HT:r:+Stdlib__Sys0wg1XƮ"~7+Stdlib__Seq0Jd8_mJk+Stdlib__Obj0_bE@Xt-Stdlib__Int320Z(I+Stdlib__Int0ʬ<xyd/Stdlib__Hashtbl0a
~Xӭ-Stdlib__Array0XUJө
	ƿ8&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jd@+Stdlib__Sys0:eW -b:U+Stdlib__Obj0ɏNJ"fn+Stdlib__Int0W0F*3濠-Stdlib__Array0Hw
@&Stdlib0~tV*e @DCBE@CB@@  , ;camlStdlib__Weak__create_83AA@A@<camlStdlib__Weak__length_185AA!x @F  @@    'weak.ml^Oc]]^A3Stdlib__Weak.length9Stdlib__Weak.length.(fun)@B@    	^Ow]]^@A@9camlStdlib__Weak__set_195CA@A@9camlStdlib__Weak__get_202BA@A@>camlStdlib__Weak__get_copy_206BA@A@;camlStdlib__Weak__check_210BA@A@:camlStdlib__Weak__fill_220DA@A@:camlStdlib__Weak__blit_214EA@A@:camlStdlib__Weak__Make_879AA@A  4 <camlStdlib__Weak__create_572A@@A@;camlStdlib__Weak__clear_658A@@A@;camlStdlib__Weak__merge_793B@@A@9camlStdlib__Weak__add_774B@@A@<camlStdlib__Weak__remove_832B@@A@:camlStdlib__Weak__find_799B@@A@>camlStdlib__Weak__find_opt_805B@@A@>camlStdlib__Weak__find_all_844B@@A@9camlStdlib__Weak__mem_838B@@A@:camlStdlib__Weak__iter_672BA@A@:camlStdlib__Weak__fold_662CA@A@;camlStdlib__Weak__count_692A@@A@;camlStdlib__Weak__stats_858A@@A@@@@@@D	-camlStdlib__Weak__raise_if_invalid_offset_188CA@A@@QOR՜`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           5ed23d0b65f1b866706e975c3832cdd9  usr/bin/apt-extracttemplates
c2c255ecb3252a71fdf160be8be4140a  usr/bin/apt-ftparchive
4e00e0edee6fa75ac9a81d45155da099  usr/bin/apt-sortpkgs
03446ab70f957e41a057168cebc43e5f  usr/lib/apt/planners/apt
1e4ef88b196d22feb2203f3cb8230ea5  usr/lib/apt/solvers/apt
9475b419a08c6b8a8b09af6185e0f34d  usr/share/doc/apt-utils/NEWS.Debian.gz
3995fba99084da93610b218f8507ff13  usr/share/doc/apt-utils/changelog.gz
48da7ec3e56cc622ce13c23e963d3e48  usr/share/doc/apt-utils/copyright
d140699da7f8b4ed0b26a6fc2d61a3fa  usr/share/doc/apt-utils/examples/apt-ftparchive.conf
16762b6b571ce09c49dcf553cf07b013  usr/share/doc/apt-utils/examples/ftp-archive.conf
15dad37acd4be836b6e264a4b79f6519  usr/share/locale/ar/LC_MESSAGES/apt-utils.mo
e4ec9ff4390d55c88df286dd63838998  usr/share/locale/ast/LC_MESSAGES/apt-utils.mo
0b3f049ca4010ed8ce2cef712a2c3dc5  usr/share/locale/bg/LC_MESSAGES/apt-utils.mo
1758ade5f1908f0efb74300c01341438  usr/share/locale/bs/LC_MESSAGES/apt-utils.mo
b04e40d5435405e77a0956aa7cef8c3f  usr/share/locale/ca/LC_MESSAGES/apt-utils.mo
19ff95ebdd1f870d5cc3096b180ff9c5  usr/share/locale/cs/LC_MESSAGES/apt-utils.mo
127d309e1fee99a997ededc2c97fd34e  usr/share/locale/cy/LC_MESSAGES/apt-utils.mo
98660990e5824764b04e27f9af5dd5a5  usr/share/locale/da/LC_MESSAGES/apt-utils.mo
5de1bfab1e1213f2b6d9645b41cdd4f3  usr/share/locale/de/LC_MESSAGES/apt-utils.mo
3b99a6bbaf0a1b2284bfd6a2389d8400  usr/share/locale/dz/LC_MESSAGES/apt-utils.mo
306c157d2b5e7850c87bbe0d0ffb2fcc  usr/share/locale/el/LC_MESSAGES/apt-utils.mo
367c30c957fde3986365be95365b762e  usr/share/locale/es/LC_MESSAGES/apt-utils.mo
8357f7e3816b91a318700616e0bda909  usr/share/locale/eu/LC_MESSAGES/apt-utils.mo
7464aaa0b4992a8e6dfceb7b8805d853  usr/share/locale/fi/LC_MESSAGES/apt-utils.mo
04de3fa853f47463a07a0903e49192ea  usr/share/locale/fr/LC_MESSAGES/apt-utils.mo
260461847e0c2dab24a65b8f7933fa47  usr/share/locale/gl/LC_MESSAGES/apt-utils.mo
28e252d70d9a5b049c116847d6285408  usr/share/locale/hu/LC_MESSAGES/apt-utils.mo
1e117d77876fcb01b4de33238cc4b538  usr/share/locale/it/LC_MESSAGES/apt-utils.mo
ef30a4e3af00926c76556a6c0c064f0a  usr/share/locale/ja/LC_MESSAGES/apt-utils.mo
89fb0eb2ed2588820c0acded8d22d035  usr/share/locale/km/LC_MESSAGES/apt-utils.mo
0008076e96babff09b23acc542e9741c  usr/share/locale/ko/LC_MESSAGES/apt-utils.mo
635e456c600d8fbc925b9ad4ac55c506  usr/share/locale/ku/LC_MESSAGES/apt-utils.mo
c9ad05b60374c4afd9b437b246a3ae44  usr/share/locale/lt/LC_MESSAGES/apt-utils.mo
75680bc569fc3dcb791cda1130276802  usr/share/locale/mr/LC_MESSAGES/apt-utils.mo
450d668f7cb14c52c6ade3165ff81d52  usr/share/locale/nb/LC_MESSAGES/apt-utils.mo
506280d12a5f3847cbce6355051fefc8  usr/share/locale/ne/LC_MESSAGES/apt-utils.mo
e5b267152b2df2ce80e90de853a81c33  usr/share/locale/nl/LC_MESSAGES/apt-utils.mo
ee6560441ce0a366bac4fca8b4c5a128  usr/share/locale/nn/LC_MESSAGES/apt-utils.mo
24654a3f216b022b44ba06818be0154e  usr/share/locale/pl/LC_MESSAGES/apt-utils.mo
660f12e5d435f80c71ac67d19d8f325f  usr/share/locale/pt/LC_MESSAGES/apt-utils.mo
9cf72c132971b52c92ed6ec3c283b13d  usr/share/locale/pt_BR/LC_MESSAGES/apt-utils.mo
346a5ef45b0cf7f40cf3bdf40de57c2f  usr/share/locale/ro/LC_MESSAGES/apt-utils.mo
42ac5b86db3127bfe7494b0e84aa662a  usr/share/locale/ru/LC_MESSAGES/apt-utils.mo
36b99b5647cc14ed554df9c47358003f  usr/share/locale/sk/LC_MESSAGES/apt-utils.mo
4553930c7d5b7de409e6760880208b81  usr/share/locale/sl/LC_MESSAGES/apt-utils.mo
eaf3596a804825d349fff508435090f6  usr/share/locale/sv/LC_MESSAGES/apt-utils.mo
542a57bf880bea0b489f405ac5908113  usr/share/locale/th/LC_MESSAGES/apt-utils.mo
00ebe81bcc31fb71df0c6e4d64c89c8f  usr/share/locale/tl/LC_MESSAGES/apt-utils.mo
d3220317a190ceb8f77eb4d7671221fb  usr/share/locale/tr/LC_MESSAGES/apt-utils.mo
462f51d79de8d095a6da73375849c3f7  usr/share/locale/uk/LC_MESSAGES/apt-utils.mo
2be9c17a473c0b9858d500ac258e16cb  usr/share/locale/vi/LC_MESSAGES/apt-utils.mo
977014bad5d131496f0a22d1874a6cd7  usr/share/locale/zh_CN/LC_MESSAGES/apt-utils.mo
3872ce005774dd2c093b0f5ac266b918  usr/share/locale/zh_TW/LC_MESSAGES/apt-utils.mo
b37e733be24581cff4ffeb6155e739da  usr/share/man/de/man1/apt-extracttemplates.1.gz
1eb66981fcc798296c1e1341e1edddc5  usr/share/man/de/man1/apt-ftparchive.1.gz
389934eb4ad42d8e574167f010964b2d  usr/share/man/de/man1/apt-sortpkgs.1.gz
2e2328dfc85f654467bcc50d554805c6  usr/share/man/es/man1/apt-extracttemplates.1.gz
a14aa0a1957731945d672989c02c3239  usr/share/man/es/man1/apt-ftparchive.1.gz
68fad1a9389cf14433d9b00101ab8900  usr/share/man/es/man1/apt-sortpkgs.1.gz
870fcda12104319975eae809df5f0380  usr/share/man/fr/man1/apt-extracttemplates.1.gz
c4a7ff26a0875405110c9c01cf5542f0  usr/share/man/fr/man1/apt-ftparchive.1.gz
64bbea731e17d0f940f85b867ce8d664  usr/share/man/fr/man1/apt-sortpkgs.1.gz
46ac1e6eef071a5cc9e651656dc61d3f  usr/share/man/it/man1/apt-extracttemplates.1.gz
ed08b958e0c78662049513f6fad5faf1  usr/share/man/it/man1/apt-ftparchive.1.gz
7df7b54190e2af5df518c75c02df29bf  usr/share/man/it/man1/apt-sortpkgs.1.gz
516bb72e7f99bbf38f4af68dd7bf54b5  usr/share/man/ja/man1/apt-extracttemplates.1.gz
2cbe807971ca1e11117e0fdf5312d1d1  usr/share/man/ja/man1/apt-ftparchive.1.gz
d4dbf1bd7f0cef4fbf2cb37f316ff125  usr/share/man/ja/man1/apt-sortpkgs.1.gz
ee64d387ec22ca4675626ec612ad081d  usr/share/man/man1/apt-extracttemplates.1.gz
4644152c2061998b544cb63d39e925ec  usr/share/man/man1/apt-ftparchive.1.gz
c18b08c17cc7343c89c58d8f64ba8ecf  usr/share/man/man1/apt-sortpkgs.1.gz
59df9080339b65436e9f43c6e950c895  usr/share/man/nl/man1/apt-extracttemplates.1.gz
ad52d84ba9e9f39974dd3416ca65b43f  usr/share/man/nl/man1/apt-ftparchive.1.gz
e482c5f2e69ea3f5faaf8b282d03f554  usr/share/man/nl/man1/apt-sortpkgs.1.gz
c5385dd25063b4b34b7828f41906c429  usr/share/man/pl/man1/apt-extracttemplates.1.gz
14aa87ffcd06ba7aca754bcf28ddbe7f  usr/share/man/pl/man1/apt-sortpkgs.1.gz
dc1a3b96b75599a3cefc7660f575a0ab  usr/share/man/pt/man1/apt-extracttemplates.1.gz
4a7e0a53681b1b8dc443d290cd6903e6  usr/share/man/pt/man1/apt-ftparchive.1.gz
5f428d71200e8d79416f47d194af780f  usr/share/man/pt/man1/apt-sortpkgs.1.gz
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ,  .   ,  ..  ,  LICENSE h  dist-cjsh  dist-es tr  package.jsont  	README.md   v 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ވ,  .   ,  ..  ,  LICENSE f  dist-cjsf  dist-es ur  package.jsont  	README.md   v 
dist-types                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        b=ELF          >    *      @       Q          @ 8 
 @         @       @       @                                                                                                                                                      
      
                    @       @       @                               `K      `[      `[            P                   K      [      [      @      @                   8      8      8                                   X      X      X      D       D              Std   8      8      8                             Ptd   A      A      A                           Qtd                                                  Rtd   `K      `[      `[                         /lib64/ld-linux-x86-64.so.2              GNU                     GNU {wL
+x         GNU                      @          	  @   A   C   emC                            T                                          ]                                          ~                     o                     }                                          >                     =                                                               @                                          !                     p                                          4                     2                                          )                                          Q                                          ,                                          r                     X                                          D                     @                     4                                                                                                                                                                                                                  Z                     D                                                                y                     -                     F                      
                     -                     F                                                                                      
                     ^                                          [                                            ,                                            H                     <                     c  "                   P    @`                 a                 `             _ITM_deregisterTMCloneTable __gmon_start__ _ITM_registerTMCloneTable _Z16ParseCommandLineR11CommandLine7APT_CMDPKP13ConfigurationPP9pkgSystemiPPKcPFbS0_EPFSt6vectorI19aptDispatchWithHelpSaISF_EEvE _Z19DispatchCommandLineR11CommandLineRKSt6vectorINS_8DispatchESaIS2_EE _ZN17pkgCacheGenerator15MakeStatusCacheER13pkgSourceListP10OpProgressPP4MMapb _ZN13pkgSourceList12ReadMainListEv _ZN6FileFd5WriteEPKvy _Z11GetTempFileRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbP6FileFd _Z9strprintfRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcz _ZN13pkgTagSectionC1Ev _ZNK11CommandLine8FileSizeEv _ZTI12pkgDirStream _ZN11CommandLineD1Ev _ZN8pkgCacheC1EP4MMapb _ZN13debListParser12ParseDependsEPKcS1_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RjRKbSB_SB_RKS7_ _ZN11CommandLineC1Ev _ZNK13Configuration4FindB5cxx11EPKcS1_ _ZN10debDebFile16ExtractTarMemberER12pkgDirStreamPKc _ZN13pkgSourceListD1Ev _ZNK13pkgTagSection4FindENS_3KeyE _config _ZN11GlobalError5ErrorEPKcz _ZNK13pkgTagSection4FindENS_3KeyERPKcS3_ _ZN10debDebFileC1ER6FileFd _ZN6FileFdD1Ev _ZN13pkgSourceListC1Ev _ZN6FileFdC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjm _ZN12pkgDirStream4FailERNS_4ItemEi _ZN12pkgDirStream12FinishedFileERNS_4ItemEi _ZN6FileFdC1Ev _ZN8pkgCache7FindPkgEN3APT10StringViewE _ZN13pkgTagSection4ScanEPKcmb _Z12_GetErrorObjv _ZN9ARArchiveD1Ev _system _ZN13pkgTagSectionD1Ev _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_ _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate _ZdlPvm _ZNSt8ios_base4InitD1Ev _Znam _ZTVN10__cxxabiv120__si_class_type_infoE _ZSt16__throw_bad_castv __gxx_personality_v0 _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l _ZdaPv _ZNSo3putEc _ZNKSt5ctypeIcE13_M_widen_initEv _ZNSo5flushEv _Znwm _ZNSt8ios_base4InitC1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv _ZSt4cout _ZSt19__throw_logic_errorPKc _Unwind_Resume __stack_chk_fail setenv dgettext strlen __cxa_atexit __libc_start_main __cxa_finalize memcpy strcmp libapt-private.so.0.0 libapt-pkg.so.6.0 libstdc++.so.6 libgcc_s.so.1 libc.so.6 GCC_3.0 APTPRIVATE_0.0 GLIBC_2.4 GLIBC_2.14 GLIBC_2.34 GLIBC_2.2.5 APTPKG_6.0 CXXABI_1.3 GLIBCXX_3.4.11 GLIBCXX_3.4.9 CXXABI_1.3.9 GLIBCXX_3.4.21 GLIBCXX_3.4                                                                                	 
         
   
                               P&y                    I   
              P   ii
  	                      ui	   	                 N   	                 ӯk   	     a   (	     )  
 7	     yѯ   E	     q   R	     t)   a	      `[             +      h[             $      p[             @+      [             A      [             x[      [             +      [             ,      [              2      [              3      `             `      x[         *          [                    [                    [                    _         @           _                    _         6           _         ;           _         <           _         ?           `         4           @`         A           `         C           a         B           (^                    0^                    8^                    @^                    H^                    P^                    X^         	           `^         
           h^                    p^                    x^         
           ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                     _                     _         !           _         "           _         #            _         $           (_         %           0_         &           8_         '           @_         (           H_         )           P_         +           X_         ,           `_         -           h_         .           p_         /           x_         0           _         1           _         2           _         3           _         5           _         7           _         8           _         9           _         :           _         =           _         >                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           HH?  HtH         5=  %=  @ %=  h    %=  h   %=  h   %=  h   %=  h   %=  h   %=  h   %=  h   p%=  h   `%=  h	   P%=  h
   @%=  h   0%=  h    %=  h
   %=  h    %z=  h   %r=  h   %j=  h   %b=  h   %Z=  h   %R=  h   %J=  h   %B=  h   %:=  h   p%2=  h   `%*=  h   P%"=  h   @%=  h   0%=  h    %
=  h   %=  h    %<  h   %<  h    %<  h!   %<  h"   %<  h#   %<  h$   %<  h%   %<  h&   %<  h'   p%<  h(   `%<  h)   P%<  h*   @%<  h+   0%<  h,    %<  h-   %<  h.    %z<  h/   %r<  h0   %j<  h1   %b<  h2   %Z<  h3   %R<  h4   %J<  f        H;HsH)Ht<HtLHdH|$HRLjLH:LRHFL>HH
L"HLLMH)HLL  MuHHLM
  HLH2  SH<  H@H=1;  H[H6;  f     UHAWAVLAUIATALSHHH  dH%(   HE1LHELH)  L;     HPH  H
;<  PAUsHH w  HHǅ    DHH   1HFH t3  "H   HIL%;  x tiHLfHHǅ     )LHA  LAHUdH+%(     He[A\A]A^A_]Hƅ LǅdebcL0LHLǅconfHǅ   	  LH8    HPH5:  1H  HH'HX   E1HA9  HELJ4k  L
  tVH} tL
  ufLA
  9H5Z  H=  ILH1VLpHHH5  J1(L5  HhLt-H9  HhUH0H   HPSH}Lt*H9  HMUH0H   HPHpHMH(H=  HH
  HHMH(H  HH
  Hx   H    H0H(H=7  L5     HHLqHPHHHW   LHH@HxHpH&L   HIHHLHHH H@L   M  A~8    AFCHHHHH9tHHpQHpHH9~HHp*iHP   H=s  HHtHPH=7  HtHPoH3HLIH
  HP0
   H9
   LIIIIIIIIII1I^HHPTE11H=%5  f.     @ H=A5  H:5  H9tH4  Ht	        H=5  H5
5  H)HH?HHHtH4  HtfD      =M6   u+UH=z4   HtH=4  d%6  ]     w    AUATIUHSHHLnH5V  LufH}hHtHC0Hx[HS0
  HEhfD HC0ǅ     HHEpA$H   []A\A]@ H5  Lu=H   HtHC0HxHS0ǅ     H    @ H5  L1¸zH  HtHC0HxHS0ǅ     H   9fD  H  HHʃttVt1   H    L   L   H    LGhLd   Hf.     L  LA   H    UfSHH(dH%(   HD$1HG       H$    HD$    HD$    $HL$HPfo$HHSHHHSHD$dH+%(   u
H(H[]%Hff.     fSH5h  H=  Ht'HH|HH=R2  H   [ H92  H=22  Hxw    [ff.     AWAVAUATUSHHdH%(   HD$8H
-  Ld$ Ld$HH  HLwHILl$HD$HH.  H  AT$ LHD$  LL    {H|$L9tHD$ HpH   fHCh    HCxH   H   H   H   H   HCp    Hǃ       ƃ    Hǃ       ƃ    Hǃ       ƃ    H   Hǃ       ƃ    Hǃ       ǃ         HD$8dH+%(   uaHH[]A\A]A^A_    HuWL LHt$1!HD$HHD$HD$ HLdHD$HT$H=  LHSfD  AUATUSHHkH8HHNdH%(   HD$(1H51  H|$'HD$HT$HthH9P@tbRHHhH4HrHH9tJHtE   AL   H+LHD$IHwXHtBHukHCD  fH+HC    C HD$(dH+%(   upH8H[]A\A] A$SfD  Ht$1HHHHD$HCHLLHD$H+z    H+H=  lff.     UHwSHH(dH%(   HD$1HHHH  HHH|$HD$dH+%(   u	H([]H@ Hy)  SHHHhHt$H   HtH  HtH   H   H9tH   Hp_H   H   H9tH   Hp<H   H   H9tH   HpH{xH   H9tH   HpH{[ff.      SHH߾  [f     AWAVAUIATUHSHH   Ht$Ld$@Lt$ LL|$0dH%(   H$   1'HT$LLH5  1L|$ HD$(    D$0 L1LHtHHLHHl$`H{Ll$XH;Hl$HwwHuaAE CHk/ H|$ L9tHD$0HpLaH$   dH+%(   udHĸ   H[]A\A]A^A_f     Ht'f     Ht$1HHHHD$HCHLHl$H;aH;ff.     UHAWAVAUATSH  HdH%(   HE1Hh   LHLLRHSpHshL   }uƅ H   %   LIHIHHMu	H  L8I
  Ik  AU HLH HHxxL`xHH9t  HH   H9%  HoH   HAx   H  HHHǅ     HH9tHHpLL(HH   HH9z  HH¨   H9  HoH   H      H  HHHǅ     HH9tHHpH0H   H8HHH^[  H`L@HH)LPHH,LpHH+H H*H HL@LLƅP LL`Hƅp H8HH0HǅH    Hǅh    Hǅ    ƅ ƅ+ ƅ*ƅ) AW {HH0H H9tHHpH0H  H5  L   H`H8H90   L9tHpHp]H@L9HPHp=     ƅ HEdH+%(     He[A\A]A^A_]MHL       HHH   ,HH`   L9tHpHpH@L9tHPHp{HH)   HH`L@HH)LPHH,LpHH+H H*Hf     HL@LLƅP LL`Hƅp H8HH0HǅH    Hǅh    Hǅ    ƅ ƅ+ ƅ*ƅ) AW HH0H H9tHHp,H0HtpH5r  L  H`H8H90  L9tHpHpH@L9HPHp@ H`L9tHpHpH@L9HPHpt    LH81LHHH8HLLH8Hf.     HHt'H  HHHH   HH    H    HHt$H"  HJHHHxxHH    Hf.     HHH   F,H`   L9tHpHpH@L9BHPHp-f     oHAx   HHH    HoH      HHHUH=  HHHxxHHH   `hH6HfHBH&HFf.      HHtHwHH)f        HH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     control config templates apt-utils control.tar %s.%s debconf TMPDIR Prior errors apply to %s template       Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
  basic_string: construction from null is not valid       Cannot get debconf version. Is debconf installed?       APT::ExtractTemplates::TempDir  7DebFile  

;      $  <       @    |  8  p       h    d  <  t\  d    $    $  8  T  \         zR x      "                  zR x  $      `   FJw ?;*3$"       D   @              \   x       8   p   $:   BBD D(G0m
(F ABBE (      (    Dd
HX
HU
KX          zPLR x1    ,   $   l     AEG@s
DAA    T   l     @    D  d    A{
Dc P          BBB B(A0A8D`
8A0A(B BBBH             c  8     D   BBA A(K`
(D ABBD ,   D  l     AEG@M
CAA    t  x     @    d  !          x  <'    AZ            H       T    AQ   L     Xs  k  BBB E(A0D8J
8D0A(B BBBJ    H     )  @   l  d0	  
  AC
PL. 
Au. s. .         fN     8     <     AC
DIEG[. _. 
A        T|         G    B    #  5d 
  
D  p   4I  ^   	  
   +  _A  x$ / 
   
  $ 
 ( 
   
 
: "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     +      $      @+              A                      x[      +                      ,       2       3                                                                                      
       >             `[                           p[                    o                 8
                   
       	                                          ^                                                     x             @      	                            o          o    X      o           o          o    
                                                                                                       [                      6       F       V       f       v                                                               !      !      &!      6!      F!      V!      f!      v!      !      !      !      !      !      !      !      !      "      "      &"      6"      F"      V"      f"      v"      "      "      "      "      "      "      "      "      #      #      &#      6#      F#      V#      f#      v#                                                              `              /usr/lib/debug/.dwz/x86_64-linux-gnu/apt-utils.debug ~KPF9Шe   7b18db77054cc1b5e2c2ce0af8a98eb62b78b3.debug    1 .shstrtab .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame .gcc_except_table .init_array .fini_array .data.rel.ro .dynamic .data .bss .gnu_debugaltlink .gnu_debuglink                                                                                                                                     8      8                                     &             X      X      $                              9             |      |                                     G   o                   4                             Q                         `                          Y             8
      8
      	                             a   o                                               n   o       X      X                                  }             x      x      @                                 B                                                                                                                                     `                                         #      #                                                #      #      q                                          >      >      	                                            @       @                                                A      A                                                 B      B      8                                           G       G                                                 `[      `K                                                p[      pK                                                x[      xK      X                                          [      K      @                                        ^      N                                               `       P                                                @`      P      p              @                                    P      I                              )                     dP      4                                                    P      8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ELF          >    &      @       ȑ          @ 8 
 @         @       @       @                                                                                                     (      (                                           ]      ]                                        S	      S	                                                                                 @      @                   8      8      8                                   X      X      X      D       D              Std   8      8      8                             Ptd   ܁      ܁      ܁                           Qtd                                                  Rtd                                        /lib64/ld-linux-x86-64.so.2              GNU                     GNU kmSIw$         GNU                      4          	B 4   7   9   SemoweNC                                                                                           
                     '                                          S                                          C                     H                     !                     J                                          ?                     6                                          
                     g                                                                                    ,                                          Z                     ?                                          _                     #                     J                     9                                                                                    8                                                                                                                               F                      E                                                               a                                                                 *                     ]                                            ,                                            y    @             y  "                                    $    H                                               _ITM_deregisterTMCloneTable __gmon_start__ _ITM_registerTMCloneTable _Z16ParseCommandLineR11CommandLine7APT_CMDPKP13ConfigurationPP9pkgSystemiPPKcPFbS0_EPFSt6vectorI19aptDispatchWithHelpSaISF_EEvE _Z19DispatchCommandLineR11CommandLineRKSt6vectorINS_8DispatchESaIS2_EE _ZN6FileFd5WriteEPKvy _ZN10pkgTagFileC1EP6FileFdy _Z13stringcasecmpN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_S9_S9_ TFRewriteSourceOrder _ZN13pkgTagSectionC1Ev _ZNK11CommandLine8FileSizeEv _ZN10pkgTagFile4StepER13pkgTagSection _ZN11CommandLineD1Ev _ZN10pkgTagFileD1Ev _ZN11CommandLineC1Ev _ZNK13pkgTagSection4FindENS_3KeyE _config _ZN11GlobalError5ErrorEPKcz _ZN6FileFd4ReadEPvyPy _ZN10pkgTagFile6OffsetEv _ZN6FileFdD1Ev _ZN6FileFdC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjm _ZNK13Configuration5FindBEPKcRKb _ZN6FileFd14OpenDescriptorEijNS_12CompressModeEb TFRewritePackageOrder _ZN6FileFdC1Ev _ZN6FileFd4SeekEy _ZNK13pkgTagSection5WriteER6FileFdPKPKcRKSt6vectorINS_3TagESaIS7_EE _ZN13pkgTagSection4ScanEPKcmb _Z12_GetErrorObjv _system _ZN13pkgTagSectionD1Ev _ZSt20__throw_length_errorPKc _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate _ZdlPvm _ZNSt8ios_base4InitD1Ev _Znam __cxa_begin_catch __gxx_personality_v0 _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l _ZdaPv _Znwm _ZNSt8ios_base4InitC1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm __cxa_rethrow _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv _ZSt4cout __cxa_end_catch _ZSt19__throw_logic_errorPKc _Unwind_Resume __stack_chk_fail dgettext strlen __cxa_atexit __libc_start_main __cxa_finalize memcpy libapt-private.so.0.0 libapt-pkg.so.6.0 libstdc++.so.6 libgcc_s.so.1 libc.so.6 GCC_3.0 APTPRIVATE_0.0 GLIBC_2.4 GLIBC_2.14 GLIBC_2.34 GLIBC_2.2.5 APTPKG_6.0 GLIBCXX_3.4.21 GLIBCXX_3.4.9 CXXABI_1.3.9 CXXABI_1.3 GLIBCXX_3.4                                                                           	 
                
                          P&y  
                  I                 P   ii
  	                 
     ui	                    N   !                 q   ,     )  
 ;     yѯ   I     ӯk   V     t)   a                   '                    $                   @'                         П         5           ؟                             .                    1                    2                    3                    +           @         4           H         7                    9                    6                    8           h                    p                    x                                                                                                                                 	                    
                                                   Ȟ         
           О                    ؞                                                                                                                                                                                                          (                    0                    8                    @                    H                    P                    X                     `         !           h         "           p         #           x         $                    %                    &                    '                    (                    )                    *                    ,                    -                    /           ȟ         0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   HH  HtH         52~  %4~  @ %2~  h    %*~  h   %"~  h   %~  h   %~  h   %
~  h   %~  h   %}  h   p%}  h   `%}  h	   P%}  h
   @%}  h   0%}  h    %}  h
   %}  h    %}  h   %}  h   %}  h   %}  h   %}  h   %}  h   %}  h   %}  h   %z}  h   p%r}  h   `%j}  h   P%b}  h   @%Z}  h   0%R}  h    %J}  h   %B}  h    %:}  h   %2}  h    %*}  h!   %"}  h"   %}  h#   %}  h$   %
}  h%   %}  h&   %|  h'   p%|  h(   `%|  h)   P%|  h*   @%|  h+   0%|  h,    %|  f        H;HsH)HtHH|$@M  HH|$M  HH|$(L  H$   L  HqH|$(L  H$   L  HRJ  H$   L$   L9   H$   H$   H)H   LH|$YHLd$`\H|$LL  H|$H|$06HH$   /L  HD$`Ld$hHD$@E  HHH$   LLd$`HK  H|$HoJ  I}(IE8H9t
IE8HpI}IEH9t
IEHpIHLYLH	LqL  f.     D  SH|  HH=z  H[Hz  yf     UHAWIAVLuAUL`ATSLH   dH%(   HE1HALH$  Lz  
   LPH]  H
|  PAWH LLeK  ǅ\    ff\HpL}HL}H   HHLHG  L=  H}L9t
HEHpt\L9\uHE    fLL)E1LK  LHUdH+%(   uHe[A\A]A^A_]H=Z  mH<HDH$D  1I^HHPTE11H=ey  f.     @ H=Ay  H:y  H9tHx  Ht	        H=y  H5
y  H)HH?HHHtHx  HtfD      =ez   u+UH=zx   HtH=x  d=z  ]     w    UfSHH(dH%(   HD$1HG       H$    HD$    HD$    HL$HPfo$HHSHHHSHD$dH+%(   u
H(H[]Hff.     ATH)IUHSHHdH%(   HD$1H$HwBH?Hu1H$H} H] HD$dH+%(   uBH[]A\ HtH1FHE HH$HEHLH$H} ff.     fSH5 W  H=X  Ht'HHHH=rw  H   [ HYw  H=Rw  Hxw    [ff.     ATH)IUHSHHdH%(   HD$1H$HwBH?Hu1H$H} H] HD$dH+%(   uBH[]A\ HtH1&HE HH$HEHL|H$H} ff.     UHSHHCHH6H?H91  HUH9   HKHUHu HMHKHMH   H;HSHC    HC0HS  Hs H} H9  HU0H9  HK(HU0Hu HM(HK0HM0H  H{ HS0HC(    HCPHS@ Hs@H}@H9   HUPH91  HKHHUPHu@HMHHKPHMPH$  H{@HSPHCH     oC`E`H[]D  HSHu HUHSHUHH
f     H9tHSHtH  HSH} HU H; HM H9   HS(HtH   HS(H} HU( H{ f.     HM@H9tOHSHHtH|   oHSHH}@HUH H{@fD  HSHHu@HUHHSPHUPHC@HHS(Hu HU(HS0HU0HC H^C0HS(H} RD  CPHSHH}@~D  CHSH} ff.     fAWAVAUIATUSHHH   H|$Ht$ dH%(   H$   1HH?HHH9r
  H    IH\$0IH)HL$8HLL$(HDHD$      H9|$M  HSHELm HUHSHUH@  H;HCHC     LE H{0HS LH9  Hu0H9  HU HS(Hu0HU(HS0HU0H  HC Hs0HC(    HsP  HE@HS@HH9I  LEPI9  HU@HSHH}PHUHHSPHUPHC	  HC@H{PHCH      HD$(oK`M`I9q  Lt$MInHD$Ld- HM|$L)J    HL)HHLU HuHL+HKLLLT$LLqLT$uDH} HS HK(Hu(HHMLT$u H}@HS@HKHHuHHH)LT$HD$HIJ,    MIMIL)HLsHH} M9H9M
  HSHtH  L*HSH} HU HH{0HC      HE HS IH9HS(HtH  HLHS(LE HU(HsPA HC HC(      H}@HS@HH9HSHHtH  HSHH}@HUH HC@D  HCHHU@HEHHCPHEPHHs@     H9uH HC(HU HE(HC0HE0H{ HdH9HC(    HsP HS@HH9l HCLm HEHCHEL3LH\$0Ll$8uHSHH?HHL9W	  Mu HD$PI]IMHD$HD$@I9S  IELt$@HD$PHD$pI] I]0Im(HD$HD$`IE HL$HIE    AE H9  HD$`IE0HD$pH$   I] I]PHD$(H$   IE@Hl$hImHIE(    AE0 H9]  H$   IEPH$   IGAoU`I]@H$   HH?IEH    HHD$ AEP )$   HI9)    fD  H9g  L!HALiHSHQHZ  H;HCHC    Hs0 Hy HS HH9  Hy0H9  HQ HS(Hy0HQ(HS0HQ0H  HC H{0HC(    H{P  HA@HS@IH9`  HqPH93  HQ@HSHHqPHQHHSPHQPH&  HC@HsPHUHCH      HoC`H?Lt$@HA`HH9l$ }  HL$HIHH    HD$LLH)HHL#LkLK4,uDH{ HT$`HL$hHs(HHu#H{@H$   H$   HsHHHJ    Ht$L)HHH9HQ  LCM97H9  Mt0I  LLHL$8LD$0HL$8LkLD$0H9LiHs0B/ HHC      HA HS HH9HS(Ht+H7  HL$8LD$0 HL$8HS(LD$0Hy HQ( HC H{PHC(      HA@HS@IH9HSHHt1H  HLHL$8LD$0HL$8HSHLD$0LI@HQHA HC@ HCHHQ@HAHHCPHAPH{@HH9uH HC(HQ HA(HC0HA0Hs HMH9HC(    H{P HS@HH9~HA@HqP? L!LiHCHALLfD  LHHD$H9I9  H9  od$HHAL1aHs  H|$@HD$PHD$H    Ht$ HD$`Hy H9  HQ0H9  ol$hHQ0HA i(H  H|$`HT$pHD$h    Ht$( H$   Hy@H9q  HQPH9|  o$   HQPHA@qHHo  H$   H$   HǄ$       HD$( H$   fo$   Y`H9tH$   HpH|$`HD$H9tHD$pHpH|$@HD$H9tHD$PHpH$   dH+%(     H   []A\A]A^A_@ o|$HL1yHD$HD$@HD$PHD$H{    HAHSHLI@XD  HS(Hy fD  CLkH9]fD  A HS(LE D  CHSH} {D  HSHH}@fD  HHH|$(HHL$0aHL$0    HH&H|$HHL$(1HL$(
    HH  Lt$f     HT$HHt&H  Ht$HL$HL$HT$HH9HQ H|$@fD  H$   Ht*H  Ht$(HL$HL$H$   Hy@HQH H$   ~@ HT$hHt'H  Ht$HL$EHL$HT$hHy HQ( H|$`D  HC Hs0HC    C HH9 HC    H{0AE  HC HH9fo|$hHA y(HD$HD$`HD$pHD$HWfD  o$   HA@yHHD$(H$   H$   HD$(HD  H|$HHL$VHL$Lt$    K\?J<    HD$H4    L)IH)HHHHnD  L|$ @J    HD$L)HHHHPD$PHT$HH9$   H$   Hy@#D$pHT$hHy XHNfAWAVAUATUHoSHH   L/LwdH%(   H$   1L|$ L|$I9#  HGLl$HD$ HD$@H+Hk0Lc(H$HD$0HC Lt$HC    C H9  HD$0HC0HD$@HD$`Hk HkPHD$HD$PHC@Ld$8LcHHC(    C0 H9  HD$PHCPHD$`oS`Ld$XHk@HCH    CP )T$p[HSPH9S  HKHSPHs@HKHHKHKPHF  H{HSHC    Hp oK`Ll$Lt$   HkLcKt5 LJL% Hu>H|$0HSHKHt$8HHuH|$PHSHKHt$XHHfH;HS  HCH9   H9a  HKHSH+LcHKHT  H{HSHC    HC HsH{ H9   HS0H9   HKHS0Hs HK(HKHK0H   H{HSHC    HC HsH{@H9HSHtH  HSH{@HSH H{fD  MtIy  LHLcH;LcB' H{ D  HSHtH%  HSH{ HS( H{@    HSHs HS(HSHS0HCHHSH+LcHSHCHD  HSHs@HSHHSHSPHCHM9  H9f  fInHCL+D$ CHY  H|$HD$ HD$    H$ HD$0H{ H9$  HS0H9  od$8HS0HC c(H  H|$0HT$@HD$8    HL$ HD$PH{@H9  HSPH9b  ol$XHSPHC@kHHU  H|$PHT$`HD$X    HD$ fo\$pH|$P[`H9tHD$`Hp:H|$0H$H9tHD$@HpH|$L9tHD$ HpH$   dH+%(   @  HĘ   []A\A]A^A_D  fInL+D$ CL|$L|$ LD  CHSH{ D  E LcH;fD  CHSH{@6D  LH[  M LHRH|$H@LHH<$HfHT$XHtH  Ht$HT$XH{@HSH H|$Pj    HT$8HtH   H4$cHT$8H{ HS( H|$0     MtI   LL&Lt$H;LsB7 H|$E ot$8HC s(H$HD$0HD$@H$Hno|$XHC@{HHD$HD$PHD$`HD$HfD  HLMpD$`HT$XH{@D$@HT$8H{ D$ Lt$H;AH0fAWAVAUATUSH   dH%(   H$   1H9c  H_pIH9S  Ht$@ HL9l$5  LH+LcIINJt% HHtu:H{ IV IN(Hs(HHUuH{@IV@INHHsHHH6LkpyL|$@HKL|$0H9g  IEHl$0HD$@IELT$`ImLd$8IMMeIE    AE LT$PH9  HD$PIEHD$`IEImL$   ImLd$XMeIE    AE L\$pH9  HD$pIEH$   HAoMHm۶m۶mLd$xL)ImHIE    HAE H)$   Hi  IpMPMLl$Lt$MIILT$ LL\$(I      H   H9  HspHsH   HsxHsH   H  H;HSHHC      H   HS HL9U  H   H9  H   HS(H   H   HS0H   H  HC Hs0HC HC(      H   HS@HHL9  H   H9g  H   HSHH   H   HSPH   HW  HC@HsPHHCH    IpIp oC`   I  HpH3HpH{pHCH9H91  HSHtH  H{pHSHSx HHC      H   HS HI9HS(HtH  LH   HS(H    HC HC(      H   HS@HI9HSHHtH  L2H   HSHH    Hs@ HCHH   H   HCPH   Ls@L    H9ufD  HC(H   H   HC0H   Lk f.     H9HC(    AE  HS@H   HL9/fD  HSHspHSxHSH   H/f     Ll$Lt$LT$ L\$(HD$0I>L9k  IVH9  o\$8IVIA^H  H|$0HT$@HD$8     HD$PI~ L9  IV0H9&  od$XIV0IF Af(H  H|$PHT$`HD$X     HD$pI~@L9  IVPH9  ol$xIVPIF@AnHH  H|$pH$   HD$x     H|$pfo$   AV`L9tH$   LT$HpZLT$H|$PL9tHD$`Hp=H|$0L9HD$@Hp!L9l$fD  H$   dH+%(     Hĸ   []A\A]A^A_    AE H   HS(f     AH   HSH3f.     CH{pHSlD  LHLH I     LHHLHL$HL$f     LHLHLT$LT$IfD  HT$8Ht.H  LL\$LT$HT$8I>L\$LT$IV H|$0}fD  HT$xHt/Hg  LLT$L\$:HT$xI~@LT$L\$IVH H|$pD  HT$XHt/H   LL\$LT$HT$XI~ L\$LT$IV( H|$P-D  HC     HS H   I9@ o|$XIF A~(LT$PLT$`L    ot$xIF@AvHL\$pL$   L@ ot$8IAvL|$0L|$@L?D$`HT$XI~ IV( H|$PnD$@HT$8I>IV H|$0$   HT$xI~@IVH H|$p|Kff.     AWHAVH)AUATUSHHx  dH%(   H$h  1H   !  IHH  IFpH\$ HD$`H$   HD$Ht$(HMnpHl$(Hm۶m۶mHHD$ LHXIFxHH,    LH)HHD$HLL} HMLLHL$uFI   HU HM(I   HH^u!I   HU@HMHI   HH9H|$ LgHOLH$  H$Ht$LL	uKLl$ I   I   IUIMHHu!I   IUIMI   HH	  H$Ht$LLu(L|$ H} Hu(IWIOHHz	  e	  HL/)  L|$ LL$`D  I.IFL|$MHH$f.     IMoHMH$J4+Hu:I IV IN(Iw(HHuI@IV@INHIwHHHIpxL|$LH\$HL$MgLL$$HHKLHIHu:I~ HS HK(Iv(HHyuI~@HS@HKHIvHHHZHpxHL$H\$L9  HD$LaH$   L9  HAH$   H$   HA LY0L!H$   L$   Hi(HA    A H$  L9U  H$  HA0H$   HA@H$  LQPH$@  LY LiHHA(    A0 H$0  L9  H$0  HAPH$@  LQ@oI`MOAP IL$8  HAH    )$P  L9  HIGHAIGHALMIG    Mo0  IG Hy L9  I9  HA IG(HQ0HA(IG0HA0H  I IW0IG(    MgP IG@Hy@L9p  I9  HA@IGHHQPHAHIGPHAPHz  I@IWPIGH    HT$ AoW`H$   I?Q`H9  I9  o$   IWIAgH  H$   H$   HǄ$        H$  I H9  I9  o$  IW0IG Ao(H  H$  H$   HǄ$       H$0  I@H9q  I9  o$8  IWPIG@AwHH  H$0  H$@  HǄ$8       H$0  fo$P  A_`H9tH$@  H$HpH$H$  H9tH$   H$HpH$H$   HD$H9tH$   H$HpH$LIpt@ LHCLHHL$L\$L$L$L\$HL$    HHLHHL$L$L$HL$LH2LHH$H$ H$8  Ht&H  HH$eI@H$H$8  IWH H$0  H$  Ht&H;  HH$I H$H$  IW( H$       H$   Ht'HZ  Ht$H$H$   I?H$IW H$   .    IWHHt,H  LHL$L$|HL$IWHL$Hy@HQH I@|f.     IW(Ht6H  LHL$LL$L$'HL$IW(LL$L$Hy HQ( I IWHt?H]  LLHL$0L\$LT$L$IWHL$0L\$LT$L$HQA I%    HA IG(HA(IG0HA0Mo LPHA@IGHHAHIGPHAPMg@Lo$  IG AG(H$  H$   HfD  o$8  IG@AHH$0  H$@  HEfD  o$   IAHD$H$   Haf.     HT$(Ht$ IHLL)H   S  H|$(   Ld$ KHt$LL"u(L|$ H} Hu(IWIOHHJ  H$Ht$LLu.L|$ I   I   IWIOHH     Ht$`Lc   /$   H$  I $@  H$8  I@cAG0IW(Hy AGPIWHHy@%AGAIW$   H$   I?HL  H$h  dH+%(     Hx  []A\A]A^A_H}@IWIOHuHHH:H}@IWIOHuHHHI   IWIOI   HHkLHm۶m۶mHL$   L$   HHAHL$`HHHD$ H    H)HIlH$   H$H$   HD$H$   HD$H$@  HD$H$   HD$(  HE H$   H$   L]Lm HmL$   LMHE    E  L$   M9/  HE L$   H$   LmLm0Hu@L$   LE8HE    E  L$   I9r  HE@L$   H$   HD$oEPHu0L$   H$   H$HE8    E@ )$   H9  H$   H$   H$   H$L$   HǄ$       H$   HD$Ƅ$    H$  M9  H$   L$  H$   HD$L$  L$   HǄ$       Ƅ$    H$0  M9}  H$   L$0  H$@  HL$(HT$`LL$8  Ht$ L$   HǄ$       Ƅ$    )$P  H$0  HD$H9tH$@  HpyH$  HD$H9tH$   HpVH$   HD$H9tH$   Hp3H|$  H$     Hl$ L9tH$   HpH$   L9tH$   HpH$   H$H9tH$   HpHpH$HMLUH$   H9LHtH<$HLT$08LT$0H$
LHLHLD$@)D$0foD$0LD$@iLH
LHLD$PLL$0)D$@LL$0foD$@LD$PLHt)LLLT$PLL$@HL$0HL$0LL$@LT$PMLH>H|$HLD$pLT$hLL$@L\$0)D$POL\$0LL$@foD$PLT$hLD$pLHtDLLD$xLT$pLL$hHL$PL\$@Ht$0Ht$0L\$@HL$PLL$hLT$pLD$xMML9tH$   HpH$   L9tH$   HpH$   H$H9tH$   HpHL)Hp IF MnH HD$0IF@HD$@IFPHD$`IF0HD$   H$   HCH$   HCH$   HCHkLCHC    C L$   H9  H$   HCH$   HCH$   HCHkHC    C L$   H9  H$   HH$   HCH$   oCH[ IHC    )$   I9  HCIFHCIFHCLM.IF      H{IV HH9T$   H9%  HSIV(HsHSIV0HSH  I~ Iv0IF(      H{IV@HH9T$`a  H9  HSIVHH3HSIVPHH  I~@IvPIFH    H<$  HD$Ao~`H$   H$   {H9  H$   H$   H$   H$   H$H$   Ƅ$    H$   H$   HD$HǄ$       H$  H$   L92  H$  H$   H$   HD$H$  L$   H$   H$0  H$   HǄ$       Ƅ$    L9  H$0  H$   H$@  L)H$8  1LHHHL$(Hm۶m۶mHfo$   L$   HƄ$    HǄ$       )$P  sH$0  HD$H9tH$@  Hp`H$  HD$H9tH$   Hp=H$   HD$H9tH$   HpH$   L9tH$   HpH$   L9tH$   HpH$   H$H9tH$   HpHpHp	H$LCHKH$   HCL9HCHH H<$LHL$hLD$PHCLD$PHL$hHHdH|$LHL$PHL$PHHHH|$LHL$P軿HL$PH$   HHBHH|$HL$P芿HL$P&HCH9D$@  IVHHt&H  Ht$`HL$POIVHH{HL$PHS IF@HCH9D$0w  IV(Ht&H<  Ht$ HL$P IV(H{HL$PHS IF L9IVHt#H   LLHL$P趾IVHL$PHCHS IDHCHHHLLD$hHL$PsHCHL$PLD$hHCHHlHLLD$hHL$P:HCHL$PLD$hDIFHHSHCIFPHHD$`IF@UIF(HSHCIF0HCHD$ IF AFCIV&AF0IV(H{AFPIVHH{iHD$ HD$`"HzH鑿fAWAVAUATUSH  H7HWL$  H$  dH%(   H$  1HLLt$H$  H$     L   HHD$0H$  H9tH$  Hp=Lt$PHt$0   LLt$A謼1ۀx tDH|$jH|$0落H$  dH+%(     H  []A\A]A^A_D  H|$fHD$p    )D$`$L<HD$(H=<  H$   H5q  HƄ$    HD$8<D$OH$0  HD$     HD$Ht$H|$蓻Ät  HD$H|$L$P  L$p  %   Ƅ$0   H$   Ld$`H$   HǄ$(      L$@  HǄ$H      Ƅ$P   L$`  HǄ$h      Ƅ$p   ԻH$   HH$   Hu	H	  L$   HLd$`LH$   H$   H$   H9j  HL$H9  H$0  H$   o$   $(  Hs  H$   H$   HǄ$        H$   H9tH$   HpH|$G   Ld$`H$   H$   HHu	H  HLLd$`H$   (H$   H$@  H9/  L9v  H$P  H$@  o$   $H  He  H$   H$   HǄ$        H$   H9tH$   HpH|$1Ld$`H$   H$   HHu	H
  HLLd$`H$   UH$   H$`  H9  L9  H$p  H$`  o$   $h  H  H$   H$   HǄ$        H$   H9tH$   HpLH$(  H  HD$(HL$ H\$hH$  H$  H+$  H9H$  HCHD$ H;\$p  HCHLd$`HH$   H$   HnHC0H$H  Hk HC H$@  HHGHCPH$h  H{@HC@H$`  H#fo$  HpKH\$hH|$H$   Ld$`H$`  HD$(L9tH$p  Hp3H$@  L9tH$P  HpH$   HD$H9H$0  HpHt$H|$Ä`HL$`x Ld$hHL$@  H|$mHD$@HI9tWH}@HEPH9t
HEPHp膷H} HE0H9t
HE0HplH} HEH9t
HEHpRHpI9uH|$@ )Ht$pH|$@H)+fD  H$   Ld$`HHL  H$   Ht"H)  H葶H$   H$   H$(   H$        H$   Ht"H  HAH$   H$`  H$h   H$        H$   Ht"HI  HH$   H$@  H$H   H$        o$   H$@  $H  H$   H$   H    o$   H$   $(  H$   H$   H    o$   H$`  $h  H$   H$   H    H$   Ld$`H5E  H=  HpHH1鐷fD  I9tlLLHIHm۶m۶mH)HHHHHcHH     I   LH1I9t@ HHpI9uH4  |$O H$   HD+3  HHD$(>E1N      H   脳H|$ HHD$HD$@HI9+  Hs`H|$0b  Lt$HSh1H|$0L²  HChH|$L   A
HChHP藳Ań  HL$8HT$(fHH|$)$   HǄ$         L$   L$   M94  @ I(IG8H9t
IG8Hp~IIGH9t
IGHpdIHM9uL$   MtH$   LL);E   HpL9   H|$薳H螳Rf     $   H$   H$@  $   H$   H$`  @$   H$   H$      H5  H<L$   L$   AM9MtH$   LL)P۱HH5  1
D  H|$@Lg1袱HH5  1ѱڳ@ H=A  lH=5  `H=)  THIDH\H^I錳HH龳H߳HLd$`HLd$`驳If.      SHH@HCPH9t
HCPHpBH{ HC0H9t
HC0Hp(H;HCH9tHs[HfD  [fD  ATIUSHoHH9t_D  H{@HCPH9t
HCPHpΰH{ HC0H9t
HC0Hp贰H;HCH9t
HCHp蛰HpH9uI$HtIt$HH)[]A\uD  []A\f.     HHtHwHH)If     f.     D  H$I$I$AWAVAUIHm۶m۶mATUSH8HoL7H|$HL)HHH9  I9   IHHEHHD$ M)H  H1  HD$    HD$Iu IUIID$HLI$&ID$0Iu IU(I|$ ID$ IHID$PIu@IUHI|$@ID$@HAoU`M~0Ll$AT$`MfL9     fD  IE I$IEID$I}0IEMd$ID$    A$ I} ID$L9"  IE ID$ IE0ID$I}PIE(ID$@M|$ID$    AD$  I}@It$0H9   ID$@Iu@IEPID$8IEHI|$AoD$PAE`I9tID$ Hp[I|$L9t
I$HpDID$pI`IpIpL9   II}I} ID$L9IT$HHL裭ID$f     IT$8HHGuID$88 IT$HHLJID$IEpHD$H9w  II    I$IEID$IE M} I|$0M}0MD$ME(IE    AE I|$ L9   ID$ IE0ID$0Iu@I|$PIEPM} MD$(M}HIE(    AE0 I|$@H9toIEPIt$@ID$PAoM`IpM|$HIpAL$L9t{IE I|$M}MEI<$L95LH5LLD$(;LD$(LHt"LHCLLD$(LD$(,@ Hm۶m۶
H)HEHHHH!HH    H)HHHD$MtHD$LH@HHD$(L)HL$HD$Ht$ H\$HAH    HH)HHHAH8[]A\A]A^A_fD  HHL$ |HD$H$I$I$HL$ H9HFH<    HD$ H)HH=_  JHHHL裫L蛫HH|$ tHkt$ pH|$֫LHHf.     fAWHOAVAUATUHSHH   LodH%(   H$   1HLd$0Ld$ H98  HD$ HGHD$0HC Ll$(L{0Ll$PHLs(HC    C Ll$@L9  HD$@HC0HD$PHC@Lt$HLKPLt$pL{ LCHHC(    C0 Lt$`L9=  HD$`HCPHD$pLK@oC`CP HE LD$hLEHCH    )$   L9  HHEHCHEHCLE Lf.     HE    HM0HU   HE H{ H9  I9  HC HE(HS0HC(HE0HC0H  H} HU0HE(    L}PHU@ HE@H{@L9  I9]  HC@HEHHSPHCHHEPHCPHP  H}@HUPHEH     oM`HD$ H} K`L9  I9  o\$(HUHE ]H  H|$ HT$0HD$(     HD$@H} L9  H9  od$HHU0HE e(H  H|$@HT$PHD$H     HD$`H}@L9  I9  ol$hHUPHE@mHH  H|$`HT$pHD$h     H|$`fo$   U`L9tHD$pHpH|$@L9tHD$PHpϧH|$ L9tHD$0Hp跧H$   dH+%(     HĨ   []A\A]A^A_fD  HC HE(HC(HE0HC0HM H     LHHLHL$HL$f     HC@H9k  HUHHt.H  LLD$HL$讦HUHH{@LD$HL$HSH H}@ LHLLLD$HL$LL$aLL$HL$LD$D  LHBLLHL$+HL$(HC H9HU(Ht8HX  HLD$LL$HL$HU(H{ LD$LL$HL$HS( H} H9JHUHt-H  LHLL$LD$菥HULL$LD$HSD HE     HT$hHtHd  LLHT$hH}@HUH H|$`iHT$HHtHD  LHT$HH} HU( H|$@f     HT$(Ht%H  LHL$ϤHT$(H} HL$HU H|$ O    ot$(HE uLd$ Ld$0L(     HC@HEHHCHHEPHCPL}@Lot$hHE@uHLt$`Lt$pLxo|$HHE }(Ll$@Ll$PLEPHUHH{@qD  ECHUw     D$pHT$hH}@ D$PHT$HH}  D$0HT$(H}  E0HU(H{  HH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
       basic_string: construction from null is not valid       Internal error, failed to scan buffer   Internal error, failed to sort fields apt-utils APT::SortPkgs::Source Unknown package record! 
 vector::_M_realloc_insert   ;      D$  $L  4  P  bp  t$      H  D  Ĥ     T    t$  $X  Ī    4    d  t    t  0           zR x      ȣ"                  zR x  $         FJw ?;*3$"       D   П                  zPLR x    ,   $   (     AEG@s
DAA    T   x     @ 0      |    BGD G0L
 AABD       d    A{
Dc 0     H    BGD G0L
 AABD (   P  ĥ   ADK 
AAF   |  Z    AH
OAP   D  >    BBB E(A0A8NN

8A0A(B BBBE         P   S  P     .  7  BBB B(A0E8J
8A0A(B BBBF              L     	   BBB B(A0A8G
8A0A(B BBBH   4         BDA |
ABJAAB       P!       L     lD  7  LBB O(A0A8DpZ
8A0A(B BBBGL   x  l    BFB B(A0D8J,
8A0A(B BBBG   P   p  .    BEE B(A0A8J_
8A0A(B BBBA         H>        @  ĝ'    AZ   L     c  Q  BBB B(A0A8G
8C0A(B BBBF    T  1  }  8   x  d{  a  AC
BEFJR. W. 
A       ǜ"   J      G   M  
M 
  G 
    -"				G  

 
    }       0 (0 $  xN  p    ^  
 
 
  
 g  P      d  !6  m\                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            '      $      @'                                                                                      
       }                                                            o                 P	                   
                                                 P             8                                        p                   	                            o          o    `      o           o          o                                                                                                                                 6       F       V       f       v                                                               !      !      &!      6!      F!      V!      f!      v!      !      !      !      !      !      !      !      !      "      "      &"      6"      F"      V"      f"      v"      "      "      "      "      "      "      "      "                                                                            /usr/lib/debug/.dwz/x86_64-linux-gnu/apt-utils.debug ~KPF9Шe   cb0b9d1bec1a6b6db11d145349770324ba13e5.debug    /$ .shstrtab .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame .gcc_except_table .init_array .fini_array .dynamic .data .bss .gnu_debugaltlink .gnu_debuglink                                                                                                                                          8      8                                     &             X      X      $                              9             |      |                                     G   o                   <                             Q                         p                          Y             P	      P	                                   a   o                   t                            n   o       `      `                                 }             p      p                                       B                   8                                                                                                                                                            #       #                                                #      #      Z                                          }      }      	                                                                                                   ܁      ܁                                                             `                                                      ;                                                                                                                                                                  @                                        P      P                                                                                                       @            x              @               
                           I                                                   d      4                                                          +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ELF          >    0,      @       Q          @ 8 
 @         @       @       @                                                                                                                                                      !      !                    @       @       @      ?      ?                   PK      P[      P[            h                   K      [      [      @      @                   8      8      8                                   X      X      X      D       D              Std   8      8      8                             Ptd   C      C      C                           Qtd                                                  Rtd   PK      P[      P[                         /lib64/ld-linux-x86-64.so.2              GNU                     GNU ,'UijniH         GNU                      >          ) >   @   B   em%mCC                        }                     ~                     E                     M                     h                                                               "	                     *                                                               (                     	                     c                                                                                                         =	                                          ^	                                          R                     0	                     z                                                                                    	                     0                                          8	                                                                                                         V                                          
                                                                F                                           G                                          +                                                                                    )	                                                                 "                                          	                                            <                     e                     ,                       8                     /                     O	  "                       a                @`             =    a                 `             _ITM_deregisterTMCloneTable __gmon_start__ _ITM_registerTMCloneTable _Z16ParseCommandLineR11CommandLine7APT_CMDPKP13ConfigurationPP9pkgSystemiPPKcPFbS0_EPFSt6vectorI19aptDispatchWithHelpSaISF_EEvE _Z19DispatchCommandLineR11CommandLineRKSt6vectorINS_8DispatchESaIS2_EE _ZN17pkgPackageManagerD2Ev _Z14DropPrivilegesv _ZN17pkgPackageManager12OrderInstallEv _ZNK13Configuration5FindIEPKcRKi _ZN11CommandLineD1Ev _ZN13Configuration3SetEPKcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE _ZN11CommandLineC1Ev _ZN4EIPP11ReadRequestEiRNSt7__cxx114listISt4pairINS0_12basic_stringIcSt11char_traitsIcESaIcEEENS_10PKG_ACTIONEESaIS9_EEERj _ZN4EDSP19WriteSolutionStanzaER6FileFdPKcRKN8pkgCache11VerIteratorE _Z6WaitFdibm _Z13pkgInitSystemR13ConfigurationRP9pkgSystem _ZN11GlobalError10DumpErrorsERSoRKNS_7MsgTypeERKb _Z11SetNonBlockib _config _ZN4EDSP10WriteErrorEPKcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER6FileFd _ZN4EDSP13WriteProgressEtPKcR6FileFd _ZN6FileFdD1Ev _ZNK13Configuration5FindBEPKcRKb _ZN6FileFd14OpenDescriptorEijNS_12CompressModeEb _ZN12pkgCacheFileD1Ev _ZN13Configuration3SetEPKcRKi _ZN6FileFdC1Ev _ZTI17pkgPackageManager _ZN4EIPP12ApplyRequestERNSt7__cxx114listISt4pairINS0_12basic_stringIcSt11char_traitsIcESaIcEEENS_10PKG_ACTIONEESaIS9_EEER11pkgDepCache _ZN12pkgCacheFile4OpenEP10OpProgressb _ZN8pkgCache7FindPkgEN3APT10StringViewE _ZN12pkgCacheFileC1Ev _ZN17pkgPackageManagerC2EP11pkgDepCache _Z12_GetErrorObjv _system _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate _ZdlPvm _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev _ZNSt8ios_base4InitD1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm _ZTVN10__cxxabiv120__si_class_type_infoE _ZSt4cerr _ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv _ZSt16__throw_bad_castv __gxx_personality_v0 _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l _ZNSo3putEc _ZNKSt5ctypeIcE13_M_widen_initEv _ZNSo5flushEv _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZNSt8ios_base4InitC1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv _ZSt4cout _ZSt19__throw_logic_errorPKc _Unwind_Resume __stack_chk_fail dgettext strlen isatty __cxa_atexit __libc_start_main __cxa_finalize memcpy libapt-private.so.0.0 libapt-pkg.so.6.0 libstdc++.so.6 libgcc_s.so.1 libc.so.6 GCC_3.0 APTPRIVATE_0.0 GLIBC_2.4 GLIBC_2.14 GLIBC_2.34 GLIBC_2.2.5 GLIBCXX_3.4.26 CXXABI_1.3 GLIBCXX_3.4.11 GLIBCXX_3.4.9 CXXABI_1.3.9 GLIBCXX_3.4.21 GLIBCXX_3.4 APTPKG_6.0                                                                                	 
        
                               	         P&y   	        e	         I    	        	     P   ii
  	 	        	        	     ui	   	        	        v  
 	     ӯk   
     a   
     )  
  
     yѯ   .
     q   ;
     t)   J
        {	         N   V
      P[             -      X[             @$      `[             ,      p[             C      [             h[      [             00      [             /      [              /      [             .      [             .      [             .      [             .      `             `      h[         $          x[         :           [         9           _         >           _                    _         4           _         8           _         ;           _         =           `         0           @`         @           `         B           a         A           a         ?           (^                    0^                    8^                    @^                    H^                    P^                    X^                    `^                    h^         	           p^         
           x^                    ^                    ^         
           ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                    ^                     _                    _                    _                    _                      _         !           (_         "           0_         #           8_         %           @_         &           H_         '           P_         (           X_         )           `_         *           h_         +           p_         ,           x_         -           _         .           _         /           _         1           _         2           _         3           _         5           _         6           _         7           _         9           _         <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   HH?  HtH         5=  %=  @ %=  h    %=  h   %=  h   %=  h   %=  h   %=  h   %=  h   %=  h   p%=  h   `%=  h	   P%=  h
   @%=  h   0%=  h    %=  h
   %=  h    %z=  h   %r=  h   %j=  h   %b=  h   %Z=  h   %R=  h   %J=  h   %B=  h   %:=  h   p%2=  h   `%*=  h   P%"=  h   @%=  h   0%=  h    %
=  h   %=  h    %<  h   %<  h    %<  h!   %<  h"   %<  h#   %<  h$   %<  h%   %<  h&   %<  h'   p%<  h(   `%<  h)   P%<  h*   @%<  h+   0%<  h,    %<  h-   %<  h.    %z<  h/   %r<  h0   %j<  h1   %b<  h2   %Z<  h3   %R<  h4   %J<  f        LHH   LHHtLLLBL8L~L$LI
  LOHx7  LLHPFiH    SHi>  H`H=;  H[H;  )f     UHAWAVLIAUATLPSHX  dH%(   HE15LLHAE1HU  H
<  LLPH`	     PAVH L     
H<  y  ǅP    LH5  HH[<  &  LPLH5  Lj  LH5  H(LLLH5  H<  7  LH5  HL}LLH5  H;    LH5  HLLCLkA   N   B   L     11LH5  1H=e;  H5:  9  LH5        11HfHnHfl  H1HHǅ    )x  H=:  LH5Z  PH=:  LH5I  PrH=:  LH5A  PJLH5;     HHHH-11H  LH5%  2   H8H  LH5X  <   fH8LH3  LLH=9  HPLH5  ƅ HHH9u   HHH9ttH`HKLHSHpvHHtHH;P@tC0wz A   H
`  1HHXHW<HHH9uLL  R  1  fHLHǅ     )L  LdH2  LHP^HH  LHHUdH+%(     He[A\A]A^A_]ǅP   LH5  HH
8  ǅPLH5  HYH7  [LPLH5b  L  LH5J  HL6H7  LH5  d   H5  LH  %1ƅHLHLHHXHkLHH=f  HAH5  LH  H1ƅLHL|HHXHLHH=  dLH5  L  L  LH5e  L  L  LH5  L  L  LH5  Lm  Le  LH5C  LS  LK  LH5Q  L9  L1  HH-H/H1H3HH-H%HI*IHHHHHIHIHH1I^HHPTE11H=%3  f.     @ H=3  H3  H9tHf3  Ht	        H=3  H5z3  H)HH?HHHtH53  HtfD      =5   u+UH=2   HtH=3  d5  ]     w    fHG    Hff.     fUSHHH@H   HtS}8 HtuCHH[H]H{HE 
   H  H@0H9tɾ
   H~ff.      UH-3  H5C  SHHHdH%(   HD$1HSH3HH:EHL$HT$HHD$D$      f     SH5  H=  Ht'HH<HH=2  Hz   [ H1  H=1  Hxw c   [f.     ff.         f.     f.     D  H,  HH,  SHHmH߾x   [f.     D  H(HhdH%(   HD$1HD$0HT$8@HJhfHnHH4HpH5  HHHDfHnfl)$#HT$dH+%(   uH(If     H(HWdH%(   HD$1HD$0HJ@ H@HHBH@Ht?fHnfHnHhHflH5:  )$HT$dH+%(   uH(D  HAhf.      H(HWdH%(   HD$1HD$0HJ@ H@HHBH@Ht?fHnfHnHhHflH5  )$HT$dH+%(   uH(D  HAh-f.      AULoATUSHdH%(   HD$1L/H   HHIH$HHwKHu5A$SHCAD  HD$dH+%(   uUH[]A\A]     Ht$f     H1HHIH$HCLHLH$L+YH=
  f.      HHtHwHH)	f     f.     D  ATUSH/H9t7IHHm H{HC H9t
HC Hp8   HL9u[]A\HH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Remove Unpack ERROR:  apt-utils quiet 1 Debug::EIPP::WriteSolution Debian APT planner interface APT::System internal APT::Planner /nonexistent/stdin eipp::scenario stdout couldn't be opened Start up planner… Read request… WAIT timed out in the planner Parsing the request failed! APT::Immediate-Configure APT::Immediate-Configure-All APT::Force-LoopBreak Read scenario… Failed to open CacheFile! Apply request on scenario… Debug::EDSP::WriteSolution EIPP Done pm-incomplete pm-failed Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 System could not be initialized!        Failed to apply request to depcache!    Call orderinstall on current scenario…        Planner could only incompletely plan an installation order!     Planner failed to find an installation order!   basic_string: construction from null is not valid       8PMOutput   ;      D   $  p  d  4  T   Dx  d  <  d\  <  P  d      D    T  |             zR x      "                  zR x  $      @`   FJw ?;*3$"       D   x              \             p                                          p             l!    HT         w    D0m
A           D0n
F      X    D0n
F (   0  Lr    AAD m
ADE     \  w    AOJ0     |   d    A{
Dc 8     `    BFA A(D@c
(A ABBI      !       (      H    BAA @AB       d'    AZ          zPLR x
    8   $   X  S   AC
DNHZ. A. 9
A     `   <          6  xn       d  _  v  
V 
 `  L  
 
 
 
 
 
 
 
 
    7                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   -      @$      ,              C                      h[              00      /       /      .      .      .      .             e	             {	             	             	             	                     
       2             P[                           `[                    o                  
                   
       
                                          ^                                                     h                   	                            o          o    8      o           o          o    
                                                                                                       [                      6       F       V       f       v                                                               !      !      &!      6!      F!      V!      f!      v!      !      !      !      !      !      !      !      !      "      "      &"      6"      F"      V"      f"      v"      "      "      "      "      "      "      "      "      #      #      &#      6#      F#      V#      f#      v#                                                              `              /usr/lib/debug/.dwz/x86_64-linux-gnu/apt-utils.debug ~KPF9Шe   9a2c9613271555f269b56a6e07e2699d48e0b3.debug    ?I .shstrtab .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame .gcc_except_table .init_array .fini_array .data.rel.ro .dynamic .data .bss .gnu_debugaltlink .gnu_debuglink                                                                                                                                     8      8                                     &             X      X      $                              9             |      |                                     G   o                   8                             Q                         H                          Y              
       
      
                             a   o                                               n   o       8      8      0                           }             h      h                                       B                                                                                                                                     `                                         #      #                                                #      #                                                2      2      	                                            @       @                                                C      C                                                 D      D                                                tG      tG                                                 P[      PK                                                `[      `K                                                h[      hK      h                                          [      K      @                                        ^      N                                               `       P                                                @`      P      x              @                                    P      I                              )                     dP      4                                                    P      8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ELF          >    PC      @       a          @ 8 
 @         @       @       @                                                                                                     (      (                    0       0       0                                P       P       P      
      
                   Z      j      j      `                          ([      (k      (k      @      @                   8      8      8                                   X      X      X      D       D              Std   8      8      8                             Ptd   S      S      S                           Qtd                                                  Rtd   Z      j      j      H      H             /lib64/ld-linux-x86-64.so.2              GNU                     GNU 	tb7r;t         GNU                      S         L) S   V   \   fMem%mC iF-r"ƺ<hvBC                        0
                     
                                                                                                                                                   ;                     K
                     	                                          w                                                               2                                          m                     ]
                                          K                     V                     
                     ~                     4                                                               s
                     I                                          %                     k
                     
                     V                                                               0	                                          !                                          <
                     F                     Q                     w                                          \                                          B                                          
                     ^                                                               
                                          F                      
                                          
                                                               u                     }                                                                                                         B                     %
                                            	                                          
                                                                                      ,                       	                                          i                                                                 !  k             h  "                   k    q              "  K                "  L             
    @p               !  `S      N           q             W  !  j      @       &  "   J      H           p             _ITM_deregisterTMCloneTable __gmon_start__ _ITM_registerTMCloneTable _Z16ParseCommandLineR11CommandLine7APT_CMDPKP13ConfigurationPP9pkgSystemiPPKcPFbS0_EPFSt6vectorI19aptDispatchWithHelpSaISF_EEvE _ZNSt8_Rb_treeIN8pkgCache11PkgIteratorES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE16_M_insert_uniqueIRKS1_EESt4pairISt17_Rb_tree_iteratorIS1_EbEOT_ _ZTVN3APT16PackageContainerISt3setIN8pkgCache11PkgIteratorESt4lessIS3_ESaIS3_EEEE _Z10ShowBrokenRSoR12pkgCacheFileb _ZTIN3APT16PackageContainerISt3setIN8pkgCache11PkgIteratorESt4lessIS3_ESaIS3_EEEE _ZNSt8_Rb_treeIN8pkgCache11PkgIteratorES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE24_M_get_insert_unique_posERKS1_ _ZTSN3APT16PackageContainerISt3setIN8pkgCache11PkgIteratorESt4lessIS3_ESaIS3_EEEE _Z19DispatchCommandLineR11CommandLineRKSt6vectorINS_8DispatchESaIS2_EE _ZNSt7__cxx1110_List_baseINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE8_M_clearEv _ZN3APT25PackageContainerInterfaceC2ENS_14CacheSetHelper11PkgSelectorE _ZN3APT14CacheSetHelperC1EbN11GlobalError7MsgTypeE _ZN11pkgDepCache12MarkAndSweepEv _ZN11pkgDepCache19GetCandidateVersionERKN8pkgCache11PkgIteratorE _ZN18pkgProblemResolverC1EP11pkgDepCache _ZN12pkgCacheFile19InhibitActionGroupsEb _Z14DropPrivilegesv _ZN4EDSP13WriteScenarioER11pkgDepCacheR6FileFdP10OpProgress _ZNK13Configuration5FindIEPKcRKi _ZN11CommandLineD1Ev _ZN4EDSP11ReadRequestEiRNSt7__cxx114listINS0_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEES9_Rj _ZN13Configuration3SetEPKcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE _ZTIN3APT25PackageContainerInterfaceE _ZN11CommandLineC1Ev _ZN4EDSP19WriteSolutionStanzaER6FileFdPKcRKN8pkgCache11VerIteratorE _ZN3APT14CacheSetHelper22PackageFromCommandLineEPNS_25PackageContainerInterfaceER12pkgCacheFilePPKc _Z6WaitFdibm _ZN3APT14CacheSetHelperD1Ev _ZN3APT25PackageContainerInterfaceD2Ev _Z13pkgInitSystemR13ConfigurationRP9pkgSystem _ZN11GlobalError10DumpErrorsERSoRKNS_7MsgTypeERKb _Z11SetNonBlockib _ZN18pkgProblemResolver7ResolveEbP10OpProgress _ZN13Configuration5ClearERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE _config _ZN4EDSP10WriteErrorEPKcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEER6FileFd _ZN4EDSP13WriteProgressEtPKcR6FileFd _ZN6FileFd5CloseEv _ZN6FileFdD1Ev _ZN3APT7Upgrade7UpgradeER11pkgDepCacheiP10OpProgress _ZN6FileFd14OpenDescriptorEijNS_12CompressModeEb _ZN12pkgCacheFileD1Ev _ZN4EDSP12ApplyRequestERKNSt7__cxx114listINS0_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEESA_R11pkgDepCache _ZN4EDSP20WriteLimitedScenarioER11pkgDepCacheR6FileFdRKSt6vectorIbSaIbEEP10OpProgress _ZN13Configuration3SetEPKcRKi _ZN6FileFdC1Ev _ZN12pkgCacheFile4OpenEP10OpProgressb _ZN8pkgCache7FindPkgEN3APT10StringViewE _ZN12pkgCacheFileC1Ev _Z12_GetErrorObjv _ZN18pkgProblemResolverD1Ev _system _ZN11pkgDepCache11MarkInstallERKN8pkgCache11PkgIteratorEbmbb _ZN8pkgCache11PkgIteratorppEv _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate _ZdlPvm _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_ _ZNSt8ios_base4InitD1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm _ZTVN10__cxxabiv120__si_class_type_infoE _ZSt4cerr _ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv _ZSt16__throw_bad_castv __gxx_personality_v0 _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l _ZNSo3putEc _ZNKSt5ctypeIcE13_M_widen_initEv _ZNSo5flushEv _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _Znwm _ZNSt8ios_base4InitC1Ev _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv _ZSt4cout _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base _ZSt19__throw_logic_errorPKc _Unwind_Resume __stack_chk_fail dgettext strlen isatty __cxa_atexit __libc_start_main __cxa_finalize memset memcpy strcmp libapt-private.so.0.0 libapt-pkg.so.6.0 libstdc++.so.6 libgcc_s.so.1 libc.so.6 GCC_3.0 APTPRIVATE_0.0 GLIBC_2.4 GLIBC_2.14 GLIBC_2.34 GLIBC_2.2.5 APTPKG_6.0 GLIBCXX_3.4.26 CXXABI_1.3 GLIBCXX_3.4.11 GLIBCXX_3.4.9 CXXABI_1.3.9 GLIBCXX_3.4.21 GLIBCXX_3.4                                                                                       	    
         
    	    	         
                                          P&y                    I   	              P   ii
  
                      ui	                    N                    v   )     ӯk  
 8     a   C     )   R     yѯ   `     q   m     t)   |      j             0D      j             5      j             C      j             k      j             M      j             G      j              H      j             G       k             `H      k             H      k             `S      p             p      k         0           k         J           o         T           o                    o         F           o         K           o         M           o         R           p         A           @p         X           p         ]           q         Z           q         U           m                    m                    m                    m                    m                    m                    m                    m                    m         	           m         
           m                    m                    m         
           m                    m                    m                     n                    n                    n                    n                     n                    (n                    0n                    8n                    @n                    Hn                    Pn                    Xn                    `n                    hn                    pn                     xn         !           n         "           n         #           n         $           n         %           n         &           n         '           n         (           n         )           n         *           n         +           n         ,           n         -           n         .           n         /           n         1           n         2            o         3           o         4           o         5           o         6            o         7           (o         8           0o         9           8o         :           @o         ;           Ho         <           Po         =           Xo         >           `o         ?           ho         @           po         B           xo         C           o         D           o         E           o         G           o         H           o         I           o         L           o         N           o         O           o         P           o         Q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           HH?  HtH         5J=  %L=  @ %J=  h    %B=  h   %:=  h   %2=  h   %*=  h   %"=  h   %=  h   %=  h   p%
=  h   `%=  h	   P%<  h
   @%<  h   0%<  h    %<  h
   %<  h    %<  h   %<  h   %<  h   %<  h   %<  h   %<  h   %<  h   %<  h   %<  h   p%<  h   `%<  h   P%z<  h   @%r<  h   0%j<  h    %b<  h   %Z<  h    %R<  h   %J<  h    %B<  h!   %:<  h"   %2<  h#   %*<  h$   %"<  h%   %<  h&   %<  h'   p%
<  h(   `%<  h)   P%;  h*   @%;  h+   0%;  h,    %;  h-   %;  h.    %;  h/   %;  h0   %;  h1   %;  h2   %;  h3   %;  h4   %;  h5   %;  h6   %;  h7   p%;  h8   `%;  h9   P%z;  h:   @%r;  h;   0%j;  h<    %b;  h=   %Z;  h>    %R;  h?   %J;  h@   %B;  hA   %:;  hB   %2;  hC   %*;  hD   %";  hE   %;  hF   %;  hG   p%
;  hH   `%;  hI   P%:  f        HH  LH8`  H(DH0H@H84  HHLLH(H8L  L  H@LHHHZ  H0HHLLL
LLz@ SH<  HH=:  H[H:  f     UHAWAVLIAUATSH  dH%(   HE1LL0HAE1H`H=
     LH8H
;  HWH=  WHAVHH M  HH8HtH5  Å     ^H:    L8H5'  Hǅ`    L,H:    L8LPH5  LL  LH5  HLLLH5  H/:    LH5  HLPLLH5  H9  w  LH5  HLLLH5  H9  D  LHILHHH@H(A   N   B   H߾   	  11H@H5  1H=N9  H57  b	  H@H5j        11LLfInfInflflɄ	  )LL1)H\Hǅ    Hǅ      H@H5     DH8H   Hh11H  H@H5  2   HLL
}  H HHH(uHHHHL9tp HHKHSHHHp	HB H@ B H@B H0H@H@HHQfJ"HL9uHHHHL9   D  HHKHSHHHpyHB H@ B H@B H0HH@HHBfH"L9uHL9tPf     LHKHSHHIt$ HHE11LA      HL9uH@H5  <   AHƅ H\Hǅ    9  ӃtH1҉Lu(L  H5  L  f.     H S  H@H5  _   H^H HHH HHGHǅ ~@@fHnHHHHfl)HH|  HH;H@k    Q H Hk0HWr'@  fz&[  z& ~
@K  z% tCQHphfHnH@HkXHHDH5	  fHnH`fl)`HHHBǅ`   LH5?  HH4   ǅ`H8H5  HHs4  LPH8H5  L  LH5  HLvH/4  {H(11LH5  L    H@H5  d   1LHfH0H )L]L  LH(>H8BL
  L  H@H0HEdH+%(   Q  He؉[A\A]A^A_]H=/3  H51  C"  L LL(E11LL      HLLHLhH8111L1H+  LLHLHH8H`LLHHLPLA   N   B   L     H HH  1L?LƅHHHHǅ   H51  L<H8  H(tILGH81LFHHXHH@HH*H1L8QHphfHnH@HkXHHDH54  fHnHfl)5H5  L  H5  H=0  fH     nHHH H@HxH5  HpHp	   HGƅ HHHHH@0p~	  HLA   %HG LH HHH%I	FHL9uLHHH1LLCL  H8H51  L[  LS  H8H5  L=  L5  H H5  L  L  H8H5  L  L  H H5  L  L  H8H5%  L  L  HHH5  L  L  H{HHHHgHHcHHHHyHHHuHHHHH]H=HHcHHHHHHd 1I^HHPTE11H=g,  f.     @ H=,  H,  H9tHF,  Ht	        H=a,  H5Z,  H)HH?HHHtH,  HtfD      =.   u+UH=+   HtH=+  d.  ]     w    fHG    HÐff.     UHSHHH<HSHHHI[1]2fUSHHH@H   HtS}8 HtuCHqH[H]HHE 
   H  H@0H9tɾ
   Hff.      UH-,  H5
  SHHHdH%(   HD$1HSH3HBH:%HL$HT$HHD$D$      9f     SH5   H=m
  |Ht'HHHH=*  H   [ H*  H=*  Hxw #   [ff.     AWAVAUATUSH(H|$H  HD$H@HD$He  HD$LpM1  M~M  I_H   LcMtdIl$Ht~HUH   LjMt)I}HT$jLMm8   HT$MuLj8   HnMtiLHk8   HSHt-HufD  Il$8   L.HtIYI_8   LHt3I% HU8   HHT$HT$HtHI^8   LHtIH|$8   H_Ht
H\$H|$8   H_Ht
H\$bH([]A\A]A^A_    f.      H@     HG@f.     UHSHH_(HtH{HH[8   HuHE HE(    HE0HE8HE@    H[]f.     fUHx"  HSHH_(HHtH{{HH[8   HuHH[]    UH("  HSHH_(HHtH{+HH[8   JHuHHHH   []*f.     AULoATUSHdH%(   HD$1L/H   HHIhH$HHwKHu5A$SHCAD  HD$dH+%(   uUH[]A\A]     Ht$f     H1HHIH$HCLHLH$L+H=J	  }f.      HHtHwHH))f     f.     D  ATUSH/H9t7IHHm H{HC H9t
HC Hp0   HL9u[]A\     SHH?Ht1Hs H)H    C    HC    C    HC     [ÐH    G    HG    G    HG     HuD  AVLv?AUMATIIUIHSHLHHJ(HC    HC HLIH?H;H:IHJ?H)x*HSA4$LkH[]A\A]A^     H@HHHH UIHSHH_H   H>E1Hv HCA   Ht=HHtyHF@HK(H9MHS LEHtVHA@H9tI9rHCE1HuIEuHHtHI@1H9HDHtHv@H9sTH9tO1HLH[]1@ 1@ H_MJL9tHIH} HuHP HH(H HE1HL[]AWAVAUATUHSHHHtbIL{A   Ht`8   VoE LLID@ HELID$0pHC(   HL[]A\A]A^A_ÐI1f     L9tHUHE HtHR@H9к    IM HDIU(HtHR@H9tE1H9AYf     E1H     HF1Ht%H@@H9tHH   HD   HH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ERROR:  apt-utils quiet 1 Debug::EDSP::WriteSolution Debian APT solver interface APT::System internal APT::Solver /nonexistent/stdin edsp::scenario Dir::Log stdout couldn't be opened Start up solver… Read request… Parsing the request failed! Read scenario… Failed to open CacheFile! Apply request on scenario… ERR_UNSOLVABLE_FULL_UPGRADE ERR_UNSOLVABLE_UPGRADE ERR_UNSOLVABLE Write solution… Remove Install Autoremove Done    Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
       System could not be initialized!        WAIT timed out in the resolver  Failed to apply request to depcache!    Call problemresolver on current scenario…     Failed to output the solution!  basic_string: construction from null is not valid       N3APT16PackageContainerISt3setIN8pkgCache11PkgIteratorESt4lessIS3_ESaIS3_EEEE   ;      p(   P  0  0  `     |      `  ,  PL   h  0  @  P       `  @L  p`         L               zR x      "                  zR x  $      @   FJw ?;*3$"       D                 \             p                	                    $      .    ADJ MJC (      r    AAD m
ADE        Lw    AOJ0        d    A{
Dc H   @     BBB B(A0A8D`8A0A(B BBB   $     T    ADD HAA$     I    AKD oDA $     V    AKD wIA 8     H    BFA A(D@c
(A ABBI    @  !       (   T  H    BAA @AB       ,?    A}          zPLR x    H   $   0   W  rFE H(H0J@R
0A(C BBBM4         AGD 
GAADJA   H   @      BBB B(A0D8G@Z
8G0A(B BBBB      03    XR      x'    AZ   8   (  =
  a   AC
DOk. m. Z
A      d      E      
W   /           l 4 h  
 
^  A  # 0    g     
 -                 ;                                                                                                                                                                    0D      5      C              k      M      G       H      G      `H      H              `S                                                                                       0      
       M             j                           j                    o                                    
                                                 hm                                        !             h             X      	                            o          o    8      o           o    z      o                                                                                                           (k                      60      F0      V0      f0      v0      0      0      0      0      0      0      0      0      1      1      &1      61      F1      V1      f1      v1      1      1      1      1      1      1      1      1      2      2      &2      62      F2      V2      f2      v2      2      2      2      2      2      2      2      2      3      3      &3      63      F3      V3      f3      v3      3      3      3      3      3      3      3      3      4      4      &4      64      F4      V4      f4      v4      4      4      4      4      4                                                              p              /usr/lib/debug/.dwz/x86_64-linux-gnu/apt-utils.debug ~KPF9Шe   09acacbe74620bb037d3723be59cfdecbe7f74.debug    
 .shstrtab .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame .gcc_except_table .init_array .fini_array .data.rel.ro .dynamic .data .bss .gnu_debugaltlink .gnu_debuglink                                                                                                                                     8      8                                     &             X      X      $                              9             |      |                                     G   o                   P                             Q                                                   Y                                                      a   o       z      z                                  n   o       8      8      0                           }             h      h      X                                 B       !      !                                              0       0                                                  0       0                                               4      4                                                4      4                                                M      M      	                                            P       P                                                 S      S                                                 T      T      P                                          X      X      6                                          j      Z                                                j      Z                                                j      Z      X                                          (k      ([      @                                        hm      h]                                               p       `                                                @p      `      x              @                                    `      I                              )                     d`      4                                                    `      8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ZsF?bJ{U7$DR?l3TĎR%C`HNb@:A{=JU\"~IrLTS\6>Sꔿ-U)A-tQNWzaT+W/M8{KJMF->"4H*ilktA\~VS?u	84Յ:)
~̨//W_7$u믔:or&5>MGd43{>ؗg/y1;q;QVV(FQWM,ELiB3\,t/JlWdzJWʵҠrBH45&3X]<g~Pzuff!qh48Q/,hp24x?BQ]<U> &nS{o>\mR`+]lTfJSd<CÙk\R5y
ܜX8ȱ6F9%Z
ԳIZI~Q*sJ{u
ox)4m1l_:<Tm
kX9Fص,Blp 38X5^	,J
ȫ

|kƫK_p7xxXO!1ep875@7xzxd|ax4[)b)+S&)ēz0oĠMÕJ|)`qrtM<% ~تCj,FF%jY>;e&X鬅1Q.g@Ɇߗ3WԌsk e(j<*箩# ^~O'.vs:]K>mA0>fU/CvYKx:7=7j1pbsh*M^y'p"EN$ʹ˙E8piVRY6)5zGߓ	.d<~5`״@>WF%;p6
h}!Lrx2}H&wN۰>bX?[:õhܮ#0O]+hr]q_H1]b<V!lI$2K
O q~SAGk'PvU$^$.l^i*a(W^tH6?h<ш\j㱥_MLWWFdc)S0%X^{tT٣s"d@!PnA衈$b)^0xNڟ& 2ygxN 1 Xo=g$VO/gA]&!1t!^He]ǜWsD /x5B HGF<m\CO՟=W3T8it_DKk=AJII$
J~m  άI4C(j&Q\n]8 ^^Dny'ځ8& C
ChrÐo:/U`OM!@" j,Q=;[-3]/ˠF7]>⿽mx  }Uq!5SZh˔4<?׌JMY*p}SP~$X!qC'B݉9+ZKd:߰oU:qMH[d3w+w
Xd>Flӹ?`;2S 8 T1CS~G&8}N*p;2Cb 3UB,Ƹ`C xa	47#ƽ_! }zZB)gkB0f[-PWdBܿ)R&V0ߧKp_k؛v发6aP7T$׭xwخf۶|IJKl f:i
TAqegD*d5rw̎Pw;J+֦^:`yf&:5M3(Qj,O+4|r۽"OZX̱lRo|W/Esʴ;@ MͦԽ/$ZPn霄#+~tzAey{@CY1YretN?q3Qc0wc10ƾ @w%ɣ@Sݏ
"ʫ([m'i
6=W1!HF26o*he}wiuW|'z(g[ײfaWh2kضuf.FŷEi c
#!^2Hq>tUŝaݰ'$ԄJW}fs[K:ezj z|&5B(=bCfm:HOhl
ۅ>הUOCG
Ϟˡ+j R4Y/O&sbp=jkEW"Ş¶F^h/z
Å],Tyە 4h
"L
l
VJ&Y`=ι' $M߽yٻ˓7BXgN-06CBo*QeȰ`:O;=-8m_{j{_bg *-ŜCYb(beSu! 
>,@}g&`~Y BI!ٜGRF#0]}t7
Lou):bۇ=Atrp#~t4g#ĺ̦T`7Z.A,逄Z&U 
[Y'2%+Z|lL{mHmCw[\%2>;=Tz-0#hs2Dǟ}M&gk]ݭ@[`bdzt?%9L΢q;91QjdJi\o]JԎ#v
j
k\ZQ/R7'aPr-"{%!d#Br ;z114xeR@&חot=
1N<pOVvmΏ{EY`!6!tWj{%xg؛Ona~Kvr
E-/arBu(R=l M~3'K|p1i[ŉ|5Gd=FٮBC*ܫtݛb^s-r`.k/u4TOJRVqqXt*T*|^/I#/&S"w;	˔B*?).۴)o@zͮn{];42
^Vڡߍ2:1Պ%p$o7jo"-S؂ڑa56|h`8^R{Wpꂳs 2m$1ܖYS_mywm"!';k\	-SGW:ü6p
o=B&WܢV_/{zO/LǮSԏ?'364a9
E6P{")E&e-r,[޺cg\HUKt/РD3tt֑eٟK^G{U-E*JR
3Řĳ8>cCVWztsiTywJ
s,h#6U9yCeF#1!筫X]}l1ͺUre@U=#-qSpk.&YD[_Jl3!/FWղGdvwS!d֧Orb$^B쏨m 9J&c:9ڎu|<FlnyA{`Uf8~V'9O9+LA$Z]Zqr+P.+l?<3w.\hS,m`-8Q<0cLZ	B16Exmk.j+]lCnꈅv0:EA
)ݡf76uV_ΆR+
[7NKb/P"\t?]V	|=̴=`V
oe!X+Mw2dkQP+cD[Xfjw?f	8U+eX,k
prP%-.G&g&-iq|NQ7zL#E?{=6^քfD7;Bօg<Wr{L9qݏ{WNHԤ6m8 $Ỵ(Mn܈dYU8f:m4ym.Qn]dKWBm4:ΏÏ^<Yx剩VyOO.>AD5{Ts ٪	(
/-z-`خ!IULOZۧ0hNGG74uLO4]0$:D?uѶb=	m+Ne78idbIkjW8;PCXﵓl[*z
ž\gZ\QtiGC5=a.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         [nv}(8@ښd]m9so
=Ip`Ȓca yH> I<t~!_w)rGI#ǖk׾HZ(qDT%Xaߊ+er)!0*JU01љk}wB\B#|0:V"SLĈ\HJg)N)i&%RόؾL܇Q$fr<KH'"4xE#c#2m}QT!\eC,aud\YLq|e/%

̅(>LzFGsQ`yeW(%"muڽޠ`y^04#9nI 㔤SJdf7"
q$^u!^YCKgߒ܋r!nOtNvodM}
mL:n)IX&'#<7G2'W*1FKqH̊H5wv3%8\Ǜ/0fU,XHtҜdJ5'aKhc]݃Aa90eƟNoIM:Yqc7+R
LC{$31!Ѥ_1bDD%q+'Ѽ@E%ᦍ)ĚV]ՀY+~Y) w Tf|ڲu3UAaeqoaMCN$
6dB`ߪƕra1%
_0WV$TB:Do6̴\.0>GJ3
L0odbv{49Le-CqfHBOOVVt{\gQ9nm۳A^|iY&K,G^$ey#1B" )b\i+tJ\s!	R(@lbiЦXz7RVk]iv[mmwӝ*8Ah8/%N#Y.f:Zb-|;'2]bpS.SכQ>|yX9HF~n1{qgE>qw0
 	^?8'^9FqY%;p.m:"ɤм}5݃㤟PC w̾bmZDo5ރ'ʜ'y=w OԩyAkDdЂsw9,V,}(P hC 
N}"xי*5p=ۛ"H䬊ϝ%/*
sdAPz56p\:$f^IPErup֓xulx29нSO+.G[G9}y	~,*e`no8'En[c+! KNXx&0FBz%MYQ*?F0VALEՃ%;[z%Y1.vJ:(F)^"؉{nuM%MvsZ>ǧħ|O "μy&rqxyybY|w7"7agQܼ/~ВzO)qW+NQAgK	%41<\zUS us%J]$VZݔ|]Qq@9wHHhYp#9W=4ZKp^@XJkEu_]ѣ`pC;ǔ*lWx^OQ右wk,vإE>Neká)
&D8d_3hRlV|o[L~sI~p0vJ uk)<jtI.<_D9=qFj%Ҡ𻬖)FMb
1AAhxi[$C*Nd*yGIBw/T8mDIpԻkc29<e׹]ӻ(1'X~)<
C*Ja3&;qaFIDah`iJƻt"Z3@B~j!dl>)pBdTG 0V79Pxb;gNʮ2.xȦaZ#%Gpszqu}~&[QIt)2t%YH{0ܳL+/7;37J0z}*k
]cRDQei<°Cç	'E>#!|2yz߃?w;&VL)JPNFre~sa1S&Oe FtQiv{b;S
ώ߯9`{l찯뗧#!b4-P?|GPۧѕ^&&!ƿs8W5/)!t:=ا]J'1f{	N53Nr
JcP.-Zb?$L}tk(}	:WAG%􊥍Uǖ; .u
YgP\acofke2Mʻ}\j- {leʹdIfVswvj +Å*sͩpˠ:"(*ra;h<;kct4A%&7i""1bY,#i2&\	A+{{r9%/EOIcD/g:]HS~yOT.?h .1.R&qe?8APdx($w	e]NGv&+if5gމ"nïi#DJ'f|˥$ ff<O,9氮˜g?QlQ<,(\GOĖER*.vir7軩sF.0K#ӫym&LjT+Q8&C}m+Y\q龏P1,rٹ֮0SXM޴BMg)l"pCϧ	'|o.;wgױrow߹8l%}q|F0W'oOZqr"}CT	(K++3Wי^e1kk|<S2xcfǽ}EɍlZؔ!>\	D,;aO2!y|+2e*ˠUWU=[m8"C	FVNb[=;T,(Nj?J0a 㣷On^?s|suyx
э]j\#gmXG-UYxŸr!?oJ(~+.(S=pjE$M^*7%QRH6A6MZ3R+)3{^-~3RKkjϺir0ͪ@?zS7);7[G< FZJ↝
^,vÍY3,G4vhՊL7ԪcK
9-aWh3KR~'oR	BJFEI>g'z۶qegEʯm@nNoQW<aj}y1:saM;rR:ϧIK#I~cy	B7	g.: aO36-˅ٲm tG-j&s?Of}T%sDgZ6Ŕ-*W{~&Nky07K?YҼl*L2~RZI
6Blde''gʹ;%܇Gy[]+VIa\ZʖP1iQU,Q,?m4a[Kh6EOb:VD8 %6BC oEirG{!N6չ[l@sz!!0߄DҲƦ7pZBZV0Gk)з#~.4e{w\ǌ+f[gtRbcWc㹩0i@qw<<6[V98Uך	8*Twm?	\
6<#H:ȇ8b@.c4g2J[FD
76IA4)Pߘ",!JI>k{G͈"ih"#-l-DEN$ <~4-`	׫'[_ۮTzZ/
{VvWp	,ة`HV8	30mR^$->ZkrXeMncp0<8XpkKZ':Qs>YDXUK iKVN
Oݭomn╹`nn/HY~F-}`oGxb#"-h႙Hs8Waat~+^r8C~!2
#x("řߑ{5 b]]i4LQ@G4Z2
ML֑&~Q2#w\,\>|Rkl&
y·	ҙ톭z|+A
`H=H.bRQ~&5Bl9T5>W &e
W,Yu|bKJ=H?>\I6~ڞ(%]"11/B?ްC=ݾh)|!H-ys~[n+:N3,jNo-s6+ez&Ҍ
դ#uyvI-}>pXem?oWEm@%͂TSVqY_9'Kăwٙw Ht,d
oeؤ+7aVi&
itI_V`Q7iD?M.z}_&--.Efn3<ϗ9lv,[˻2qq%nWUȶ9xsq%Tsit_SS`IzB)=򇖀UE)f&Tj_DXmQT Ro;ò3c+lh+a2646͙5izT[I{]԰VJ%}8=|3:&,aJ9YvDv$x~$dn^sCcaf	
Ӿ%ft7dV\m<²@&HSx[?R67qS6&=NVe֣6Um&r1>޸Zu
&E<Jw6$
ܸ1+VmHYLxu;@>dI
0
u_Vs!m!/cAgH9F6S4T|Ҵ3n2Wc{L55h`0>S3XN
/nom|A%$QW%I}eAYU]ԽxB2W}	 ZʵQd޾mmD
HҲ,ԱlE䌜a$$DlJC-_gu (좁
`_u`H$6@J@{5+}|j.')!.偨MG&N@s0hoA!M}0iYGS+#%9w+*s2q2oI ۇzgl jDM-Կ/!vXc	-&? ݾ
/Di՚ӈ:Wb<etKCx TJWCa.2C/~@XC5ф6HJy3-}Uë] Ay,FץVF1IA;˂AӿW)ypt5;(x7ZF_|W?&3Y6=㈍$tlxӏIڱrυp@./'KR}r	 D2٬Xo'Oj9'>OW"9\rONB1	l5+ՑvH?v;xۚZe+ 1"#[Zز$R=\ݯ;\g$FsĉԴY0*R[);;eH=mz3z+!~*X.eYP
B
7&sփVYi:Wkeivz#WoD&0V HFY-p*YZ2n-)|H>0hzt/*[i7sD(a}p2t gh6bm$z>cR20~RI4:-5~衣+ߗd38Ύoydo>>O#{wr鎄/}/9\a9uqVyPؕ\d$ˮ_(g֒y@wRWEbf< a%cĶ"h8M|Qpm:Y	<eaOM: _U=Xjh;Q03opϊZH@XB(E}5ϓ)GHQ/-Op&pBxcb4ٻӀ=~@\A}c?W,[2&RV3$^l/2j%.0y:D⦣s$4VJO7`$f#ѣG"q|AeE ދ
.ow՘T 
UTW3`^tULZvcI0!fDI}hټŪSRЙnVgyWD*F!W5\\ί)˝pFOxDi=s>Z`]3Dh^G[n\"2㲀nXV o(-r҅Y
y<"$b7ҬT2cJ'&jlzg	$CZ|l8c)~+kD~9Jbj%(`q1OBC!T0lN ,LPoI,)+_&<;?KAHݘ0bICttLYip"Ԅ	C%2	R\KUEz%j0Y@n]lt?L6/m!G"#qxvT9xeg_
ә=:x BrZbCͲ>NWǫix_u't9a U"?'svw~4!%&7̕8㔴BT)4ͯpJ1K6m@F aE
cANJOѯrFbB鿴f{y7x.{P~y?Ҝ\%1; y3LVgAPx-T,XRЍa,~ѷyKٔb6ޘ(*]R02*cEOKQ0VϏ_X(Ĺ><ʙ~hKLQP{H8MG\lECz|jAKO0.f$$o#س,['ilIV Yhiqخ&0ȶF >b\x%W8V HNC`79Z& twKcM ΗEZɸHET"U4V&Dw!1&",ANݕAѹa	w
BJ|xj1'd	XY% )Aַ弇a1? 9葭c!?g˕, Y}tkqiNPpɳA{I\ANk2%(|b,j
K&iVvM/rMJĀ7֌_A &Xx0^s/Uڻγ)xo!)1\,Y8 &x'gsgHp"_$lǤ\!shN[p1Kĳ!((5J$C?RW<ZH
2I\PX]WSa:K°qВ]0kPbOg90+*ZKms"R \@<vQEq-_>bo<9{X..'tz\<!.W!1Dܪ3||2Y,wTv8YȞ嫞O|Jߚb.&O+iVRqK2KhGf]
#Q	YO
	yC svbؤ6t=Pd_kh=a4<+A5A0\ܑWfl /;&
̒3jl,tR|O =Rب55X?^*]6Hj|l}};4;}mȔpJb[JΌ$ehyw˅x9Xw3}Nð3Lp1Bp06o=ҖR}hf3T f*6TOEZ
̢@0)7q͈6I9q2Aګ4&z+\l`3Ʉ98z>K"T I A:iT:ZqpX+SI3d[æ5)79\o̽n6uro
рz?#sd9lk(2P	&X&L2&˺r@UD@RGTWH;z|5!gVi{4|VWz*{H	m5c7̵N1Zr'ӲԿ7&koFW7Bvf\!RA^b-r+.Lz{v/W@HGDApjU)Urq	ȕZ4MC+Suyr;>C#aSWf\5V&gK'K5avȃZ6a,iyM$x[&5
y[A0GDtޅ?DS&(>Gj
K܂zVmOl4~>iMl4!ϧwVi
q	oe$v%2%IM/^? H\d%ۅ&sX
(%pmu:Ft~È|'48oH{w%@	RQL:
&PTj6`:"3_1CT\ZSq:áIY^ ; +>:M?ËW4p9:\`Ie{+VB,^#=6AҎ[MkdW9bk
;! j}ØKozeN{)?HͽԾ/Z)
3?
k]mRCG-VJǱxֹN  KDjh
6/	IoT={ln(D11d*uPZgQ7~>&A#nRƤUQOfTKɳĲVaPO:["/f4ze F]kϒ"yǠԣxߧe&ȲϵގlW/n+dH:[plbJRowgC:ޞ>?8]ڰ,%Tn^sxs.cC>aT_e#&EP8,(~2}6%õyLn
ȡcܻ;,֚V'4CctȑfGy>E/;ae',u
}+"bPx!h5>Ƶn>z"M*vRlCJ|Nd~Sжfs3ejO9*lk^iTiӌEBԈ	@6g\dZ	foۍ`22?X68@]@j6k`RI6SnxHEiccȠ Qdڧ[-'8ճ䒶$hz|
=[
CnJrje;H=qZq;ݪᰖf7V`+L晾d>Ue*B9+퓲B3t![{0NsmjzuuQ'
\oȨVagV~稠 "mav<YDJCO*`[NWFf>Rr%JZvc|*<JZ&-g6IkvU9yNB-Q"z"XWL1@#qqVrj>qJ81*7<lHYQk
f_Ŋ㚗)2~V<MSPa<7#'l0N,ɂ/Px҈lWQX-RˡH
&/'
wL+wODu4_lu^2UgSB@ig,ZrK:x
H<I?UT6䕰møfd;C
+<dz^Ut-Yb58V_5vbsnDudV4;ՠ*SJ6L +Gѵ4W|q m/Y
7k{HYdΥ1Ol2v{Aj4	,@}09f2R8r\o6M?z5_-JCcEiȶ!(9x%\eu,P6G͗
r )g^˝]+)[H|ş5fu֯qRliw=^HuPNuU1r3rr_
DvqdSѥ_c]YV ۰W9g	YM ZUw-K
4Q<AwU3Z|o$
xokCȔVט|	5=	Y2ge
:~=8b6b!ΫcxA.]EڕOٟx*d6*.p4L4:MR8rdU1pLqL2k(V'kϨ=	jMM۹AL	y%Sz%bv_j7[d>VhOٵ
Z,5wِ̢:Zl.֕7ݤ_<T&jbc+0^iU4W-^|%*9,,M5IKJ"qNK0 KY	V%-yF@H`ӷ㸞wV*꒪67?T5.9+AmǮ#tK{G# g\ꪊ 5v]6
hGhe,X
W2A;]x޼#wS|8Do=L N\:Qm98GgΏϑ[}.rzX.lsdNi߷#<6NMp![uiQ!ҺimIG@[<aQ@Zf]q9%P*0{ըqu1gNt)>Mg͑Ir`vf%b'䜌0A#AlJ-5;5+񐚒ǏjFltM,=jx9v	bb6W'QeQeiEa3^q
kE6oQiHCp|ZuB_iV>ݩY0q=KTQa H. ;5%鸼@ɻ]ojmRhf@=#KS^I¨<^cg.ƅeXh]]`1~|OaTrbYTS*,6Zu`}LĨ3֣|͇ǯUu\(0Baʀ|"K!e9Z^Jt.Szfȩ^qo
"FR\e
`g]0NQɪfYܧ;;<^@NJɉn`@&
J8j'(셚wz@52kV"u=v_J-O?AI9x/\^yə%-
Gqṳ$[X=Kw&]6o8YK$l -MqozHC "o]֞ ǁ[,->ֈ72owd 6%r{?<%[F-
6VeþJ+?BK[VS圡|ȡIVTNvdmt y\rl
XJD}I'[i)= $xz攮E[&?a=Wj~6z.?mX/fyeIײ),I0D1Ue8#PF,9dOJ> sĔd$/@U*YaR+"Vuex*FPյ
ZZNSR
FN=}Ke -4)/Ú>b'ʪ`.˩L4ĮvX\7xO&S_Ts2K]lIAa2݋(e %џhC̕(߾ NoRX7vmNl~Cҡ-zEk7ʂ8'%n<ޢ5Ss'Q
=$_%#TPJۡ.EwIgý4
7G]*&O%?5S.ԻdS>|n<Ӑ
5F.7"L+0_r}ͿFYf'ܒ%Pz85V̈́pւF9tqaB܄+gI5sd]%4ri᭱Ŝ6q[D3vXtMlN&Ѧh}:R'4YaMۊxm#m0FUax?&22"1@-zܗuR:%$
-Rnr.L\a:EDpRM,7a/g'8jmM\6|Qi6v>U+Lm	Ɨ,"
`䎸agY0bE)'7yLbkkW@[/]؍:o}E6VPm+4dlvO8;!D)&yq\P<6{+oH
mY
]XKx6Enj)ER?fqtaklaϘG[kzVV|aTB̮MOXݚ-keM`OeXKF^9|ld,㟇VH><;5:xm-ѷye|4k6tAhreQ![
#-.@i%rZU<t;F	$w?:iɰ9[-5B7y]c$5b駨fCzE
S+]T΁;ՒbE>"MYk}JF<--@2:Wo&ipqݹ$D:8zgܟ!x26N˸?FFClu(R
ߜ{hiG/ d1K]Vp{kYAmC*FhVXD$&\?<#5EC]z5ZOYqAQ᧗d;|v?UĜ'SxB7|Ɓ,}QѰ5/mZT\$S&BQﲫ3Z'O8(>Ox3j5vscwbGOx+j
*2Mkܮ>۝~R)mcc`Lכj,N$чwGgo^+U#OA\~QLHfpSf}pj'i:{fuz69U\QC9\ m羅G,x/j_
gQuTY\n>yAVhD
{<^RDU1ٵO5t)t
\Vsd}L"讓@0XK٧k T]0kY2)ɵ<׮wNr+85zbQ+kp;ﹽed܏!3KyK^[!oa_	xAAư209K	IФ@Zk4h#}jmyvh3M	7vzj4F;c mehG,+DUI I̤0#z֜NRDч9.x. _No-n'|$fZ-fiL:k ng-
oKkn"2p8@Φ~߭2~3?
3O/>m;U_X S,i}rO$/EاIlĴTJJs=(ֳT
r~miV-Hj	gzVi-~]=-wgwO!L[v[äxp4Tv+Z?;Vք+o-ݥdv紲gZNWN|4Hד=Qf?:W3eȩ>ĹV(]^;ץPspxѫ-eٙ;QLܭO	fCҐ|8K}iI1n |QUX#2p%q_D	+:
Z#ÉR8rljr"fȡ<?9v#[;oj6DxDxOe>8qɸ@{7ץʋ&Ly֗Ee?y_AxbfퟤÝ7o0fi~H٩\ߵC3ڽsVi^_V4axwh\T6kgаz0'sd,_m
XyF3&xX!DFj{ۃ0&r*$BE)i!'5TNz^рǼ$[<'F9j6Okd(K܎Q]G#/~/4+4-4 ЁSF<u焛 Z y!Dha󞍤$X["hTTkc.,/aHhYuc.tմ9I\KFGGT7$$)[p**Hl*pY56D~hW+Eqլ	V@iw[^\bO9G1.X<58E%ԻV-k-W5YO`b]`+8re@Y3:#Ny|X@0]b_UKPY8pAvOVW<e&xu;$N xLUb7'G,G{|HKHwNbY02 S{t8Y_B\;`@[0#2X]דh`ˊ5F
	pDJsSL
1:v	\Sʀ`)s'<
c                                                                                                                                                                                                                                                                                                                                                                                                                          Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: apt
Upstream-Contact: APT Development Team <deity@lists.debian.org>
Source: https://salsa.debian.org/apt-team/apt
Comment:
 APT is an old software with lots of contributors over its lifetime. This
 file is a best effort to document the statements of copyright and licenses
 as stated in the file, but is not a complete representation of all copyright
 holders - those have been lost to times.
 .
 Several bits of apt-pkg/contrib have had public domain dedications but
 contributions from authors in countries not recognizing a public domain
 concept. We believe that these contributions have been done in good faith,
 and we treat them as if they had been made under the GPL-2+ as we believe
 some contributors may have missed these facts and the overall license statement
 for the project has always been GPL-2+, so we cannot be sure that contributors
 meant to grant additional permissions.
 .
 Translation files are considered to generally be GPL-2+,
 but they also include strings used by methods/rsh.cc which appears to be GPL-2.
 As the translations are split into separate domains later on,
 these strings are not loaded by library users outside of apt
 (they are in the 'apt' translation domain).
 .
 The apt-pkg/contrib/fileutl.cc file states "RunScripts()" is "GPLv2".
 We believe that this was not meant to exclude later versions of the GPL,
 as that would have changed the overall project license.

Files: *
Copyright: 1997-1999 Jason Gunthorpe and others
           2018, 2019 Canonical Ltd
           2009, 2010, 2015, 2016 Julian Andres Klode <jak@debian.org>
           1998, Ben Gertzfield <che@debian.org>
           2002-2019 Free Software Foundation, Inc.
           2003, 2004, 2005, 2009, 2010, 2012 Software in the Public Interest
           2002-2003 Lars Bahner <bahner@debian.org>
           2003-2004 Axel Bojer <axelb@skolelinux.no>
           2004 Klaus Ade Johnstad <klaus@skolelinux.no>
           2004 Bjorn Steensrud <bjornst@powertech.no>
           2003, 2005-2010 Hans Fredrik Nordhaug <hans@nordhaug.priv.no>
           2016, 2018 Petter Reinholdtsen <pere@hungry.com>
           2009 Rosetta Contributors and Canonical Ltd 2009
           2013 Debian L10n Turkish 2013
           2013-2018 Mert Dirik <mertdirik@gmail.com>
           2004 Krzysztof Fiertek <akfedux@megapolis.pl>
           2000-2004, 2010, 2012  Robert Luberda <robert@debian.org>
           2000-2017 Debian Italian l10n team <debian-l10n-italian@lists.debian.org>
           2003-2017 Debian Japanese List <debian-japanese@lists.debian.org>
           2000-2018 Debian French l10n team <debian-l10n-french@lists.debian.org>
           1997 Manoj Srivastava
           1997 Tom Lees
           2014 Anthony Towns
License: GPL-2+

Files: methods/rsh.cc
Copyright: 2000 Ben Collins <bcollins@debian.org>
License: GPL-2
Comment:
 This file stated:
 Licensed under the GNU General Public License v2 [no exception clauses]
 .
 We believe that this was intended to be not a statement against future
 versions of the GPL, but meant to exclude the Qt license exception in
 place in APT until that time.
 .
 We received permission from Ben in 2021 to relicense under GPL-2+,
 contributions from Adam Heath and Daniel Hartwig may still have to
 be considered GPL-2 for the time being.
 .
 Other contributions are GPL-2+

Files: CMake/FindBerkeley.cmake
Copyright: 2006, Alexander Dymo, <adymo@kdevelop.org>
           2016, Julian Andres Klode <jak@debian.org>
License: BSD-3-clause
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 .
 1. Redistributions of source code must retain the copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
 3. The name of the author may not be used to endorse or promote products
    derived from this software without specific prior written permission.
 .
 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Files: CMake/Documentation.cmake
       CMake/FindLFS.cmake
Copyright: 2016 Julian Andres Klode <jak@debian.org>
License: Expat
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation files
 (the "Software"), to deal in the Software without restriction,
 including without limitation the rights to use, copy, modify, merge,
 publish, distribute, sublicense, and/or sell copies of the Software,
 and to permit persons to whom the Software is furnished to do so,
 subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be
 included in all copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.

License: GPL-2
 This package is free software; you can redistribute it and/or modify
 it under the terms version 2 of the GNU General Public License
 as published by the Free Software Foundation.
 .
 This package is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <https://www.gnu.org/licenses/>
Comment:
 On Debian systems, the complete text of the GNU General
 Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

License: GPL-2+
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
Comment:
 On Debian systems, the complete text of the GNU General
 Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            // This config is for use with the pool-structure for the packages, thus we
// don't use a Tree Section in here

// The debian archive should be in the current working dir
Dir {
	ArchiveDir ".";
	CacheDir ".";
};

// Create Packages, Packages.gz and Packages.xz, remove/add as needed
Default {
	Packages::Compress ". gzip xz";
	Sources::Compress ". gzip xz";
	Contents::Compress ". gzip xz";
};

// Includes the main section. You can structure the directory tree under
// ./pool/main any way you like, apt-ftparchive will take any deb (and
// source package) it can find. This creates a Packages a Sources and a
// Contents file for these in the main section of the sid release
BinDirectory "pool/main" {
	Packages "dists/sid/main/binary-i386/Packages";
	Sources "dists/sid/main/source/Sources";
	Contents "dists/sid/main/Contents-i386";
}

// This is the same for the contrib section
BinDirectory "pool/contrib" {
	Packages "dists/sid/contrib/binary-i386/Packages";
	Sources "dists/sid/contrib/source/Sources";
	Contents "dists/sid/contrib/Contents-i386";
}

// This is the same for the non-free section
BinDirectory "pool/non-free" {
	Packages "dists/sid/non-free/binary-i386/Packages";
	Sources "dists/sid/non-free/source/Sources";
	Contents "dists/sid/non-free/Contents-i386";
};

// And this is (you guessed it) the same for the non-free-firmware section
BinDirectory "pool/non-free-firmware" {
	Packages "dists/sid/non-free-firmware/binary-i386/Packages";
	Sources "dists/sid/non-free-firmware/source/Sources";
	Contents "dists/sid/non-free-firmware/Contents-i386";
};

// By default all Packages should have the extension ".deb"
Default {
	Packages {
		Extensions ".deb";
	};
};
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          /* This configuration file describes the standard Debian distribution
   as it once looked */
   
Dir 
{
   ArchiveDir "/srv/ftp.debian.org/ftp/";
   OverrideDir "/srv/ftp.debian.org/scripts/override/";
   CacheDir "/srv/ftp.debian.org/scripts/cache/";
};

Default
{
   Packages::Compress ". gzip";
   Sources::Compress "gzip";
   Contents::Compress "gzip";
   DeLinkLimit 10000;          // 10 Meg delink per day
   MaxContentsChange 10000;     // 10 Meg of new contents files per day
};

TreeDefault
{
   Contents::Header "/srv/ftp.debian.org/scripts/masterfiles/Contents.top";
   BinCacheDB "packages-$(ARCH).db";
   
   // These are all defaults and are provided for completeness
   Directory "$(DIST)/$(SECTION)/binary-$(ARCH)/";
   Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
   
   SrcDirectory "$(DIST)/$(SECTION)/source/";
   Sources "$(DIST)/$(SECTION)/source/Sources";
   
   Contents "$(DIST)/Contents-$(ARCH)";   
};

tree "dists/woody"
{
   Sections "main contrib non-free";
   Architectures "alpha arm hurd-i386 i386 m68k powerpc sparc sparc64 source";
   BinOverride "override.woody.$(SECTION)";
   SrcOverride "override.woody.$(SECTION).src";
};

tree "dists/potato"
{
   Sections "main contrib non-free";
   Architectures "alpha arm i386 m68k powerpc sparc source";
   BinOverride "override.potato.$(SECTION)";
   SrcOverride "override.woody.$(SECTION).src";
};

tree "dists/slink"
{
   Sections "main contrib non-free";
   Architectures "alpha i386 m68k sparc source";
   BinOverride "override.slink.$(SECTION)";
   SrcOverride "override.woody.$(SECTION).src";
   External-Links false;             // Slink should contain no links outside itself
};


bindirectory "project/experimental"
{
   Sources "project/experimental/Sources";
   Packages "project/experimental/Packages";
   
   BinOverride "override.experimental";
   BinCacheDB "packages-experimental.db";
   SrcOverride "override.experimental.src";
};

bindirectory "dists/proposed-updates"
{
   Packages "project/proposed-updates/Packages";
   Contents "project/proposed-updates/Contents";
   
   BinOverride "override.slink.all3";
   BinOverride "override.slink.all3.src";
   BinCacheDB "packages-proposed-updates.db";
};

   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  	       1   6  #   h  (                    %             ,  #   F     j  "     5     !             
     +     C     G  #   g  2              E     C   1  \   u       .     (     H   .     w  %     *     '     :   	  M   <	  :   	     	  9   	     
     .
  )   2
  *   \
                                          	   
                             
                               DeLink %s [%s]
 *** Failed to link %s to %s Cannot get debconf version. Is debconf installed? DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to open %s Failed to rename %s to %s Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Unable to open %s Unable to open DB file %s: %s Unknown package record! W:  W: Unable to read directory %s
 realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2006-10-20 21:28+0300
Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>
Language-Team: Arabic <support@arabeyes.org>
Language: ar
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Poedit-Language: Arabic
X-Poedit-Country: Lebanon
X-Poedit-SourceCharset: utf-8
X-Generator: KBabel 1.11.4
Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;
  DeLink %s [%s]
 *** فشل ربط %s بـ%s تعذر الحصول على نسخة debconf. هل هي مثبتة؟ قاعدة البيانات قديمة، محاولة ترقية %s قاعدة البيانات كانت فاسدة، فتم تغيير اسمها إلى %s.old E:  خطأ في معالجة المحتويات %s خطأ في معالجة الدليل %s خطأ في كتابة الترويسة إلى ملف المحتويات فشل فتح %s فشل تغيير اسم %s إلى %s خطأ داخلي، تعذر إنشاء %s لم تُطابق أية تحديدات قائمة توسيعات الحزمة طويلة جداً بعض الملفات مفقودة في مجموعة ملف الحزمة `%s' قائمة توسيعات المصدر طويلة جداً تعذر فتح %s تعذر فتح ملف قاعدة البيانات %s: %s سجل حزمة مجهول! W:  W: تعذرت قراءة الدليل %s
 realloc - فشل تعيين الذاكرة                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              0        C         (  )   )     S  "   o                                1   3     e  ,   t  m     #     (   3     \     `     y       %     '               #   #  "   G     j                      #          "     5   ;  !   q                      "        	  &  )	     P     T     t  !     #         5   ]        )     #          +     #   D  $   h  &     D          8        A  (     /          !   !     C  "   c  6     %               &   	     0     P     l                  !          4     <   J  2                    &     )   /  #   Y    }     S  #   W     {       #        *                              )   %              "         /      -                              	      (         
       &       '                 +               .         ,          $       #                        !   
         0      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 0.7.18
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2010-10-02 23:35+0100
Last-Translator: Iñigo Varela <ivarela@softastur.org>
Language-Team: Asturian (ast)
Language: ast
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: Virtaal 0.5.2
   %s tampoco nun tiene una entrada binaria de saltos
   %s nun tien la entrada saltos
   %s nun tien la entrada saltos de fonte
   el curiador de %s ye %s y non %s
  Desenllazar %s [%s]
  Alcanzose'l llímite of %sB de desenllaz.
 *** Falló enllazar enllazr %s a %s L'archivu nun tien el campu paquetes L'archivu nun tien rexistru de control Nun se pue alcontrar la versión de debconf. ¿Ta instaláu debconf? Comprimir fíu La salida comprimida %s necesita un xuegu de compresión El formatu de la base de datos nun ye válidu. Si anovaste dende una versión anterior d'apt, desanicia y recrea la base de datos. La DB ye antigua, tentando actualizar %s La BD corrompiose, ficheru renomáu como %s.old E:  E: Errores aplicables al ficheru  Error al procesar conteníos %s Error al procesar el direutoriu %s Error al escribir la cabecera al ficheru de conteníos Falló criar un tubu IPC al soprocesu Nun pudo biforcase Nun pudo abrise %s Nun pudo lleese'l ficheru de saltos %s Nun pudo lleese al computar MD5 Nun pudo lleese l'enllaz %s Nun pudo renomase %s como %s Nun pudo resolvese %s Nun pudo lleese %s Fallu na ES al soprocesu/ficheru Error internu, nun pudo criase %s Nun concasó denguna seleición La llista d'estensión de paquetes ye enforma llarga Falten dellos ficheros nel grupu de ficheros de paquete `%s' La llista d'estensión de fontes ye enforma llarga Falló'l percorríu pol árbol Nun pudo algamase un cursor Nun pudo abrise %s Nun pudo abrise'l ficheru de BD %s: %s Algoritmu de compresión desconocíu '%s' ¡Rexistru de paquetes desconocíu! Uso: apt-ftparchive [escoyetes] orde
Ordes: packages camin-binariu [ficheru-disvíos [prefixu-camin]]
          sources camin-fonte [ficheru-disvíos [prefixu-camin]]
          contents camin
          release camin
          generate config [grupos]
          clean config

apt-ftparchive xenera índices p'archivos de Debian. Sofita dellos
estilos de xeneración de reemplazos pa dpkg-scanpackages y
dpkg-scansources, dende los automatizáos dafechu a los funcionales .

apt-ftparchive xenera ficheros Package d'un árbol de .debs. El ficheru
Package tien los conteníos de tolos campos de control de cada paquete,
neto que la suma MD5 y el tamañu del ficheru. Puede usase un ficheru
de disvíos pa forzar el valor de Priority y Section.

De mou asemeyáu, apt-ftparchive xenera ficheros Sources pa un árbol
de .dscs. Puede utilizase la opción --source-override pa conseñar un
ficheru de disvíu de fonte.

Les ordes «packages» y «sources» han d'executase na raiz de l'árbol.
BinaryPath tien qu'apuntar a la base de la gueta recursiva, y el ficheru
de disvíos tien que contener les marques de los disvíos. El prefixu de
camín, si esiste, améstase a los campos de nome de ficheru. Darréu,
un exemplu d'usu basáu nos archivos de Debian:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Escoyetes:
  -h    Esti testu d'aida
  --md5 Xenerar control MD5 
  -s=?  Ficheru de desvíu de fontes
  -q    Sele
  -d=?  Seleiciona la base de datos de caché opcional 
  --no-delink Activa'l mou de depuración de desenllaces
  --contents  Xenerar ficheru de conteníos de control
  -c=?  Lleer esti ficheru de configuración
  -o=?  Afita una escoyeta de configuración propia A:  A: Nun pudo lleese'l direutoriu %s
 A: Nun pudo lleese %s
 Esperaba %s pero nun taba ellí realloc - Nun pudo allugase memoria                                                                                                                                                                                                                                                                                                               3        G   L      h  )   i       "                            8     U  1   s       ,     m     #   O  (   s                      %     '        B     Q  #   c  "                              #     "   B  "   e  "          "     5     !   	     <	     P	     g	     y	  "   	     	  &  	                 !   3  #   U    y  ;     (   H  /   q  ;          2     O      .   p  /     k     9   ;  n   u       D     N        F  8   J  G     G     {     V     @     2   '  @   Z  K     A     B   )  6   l  J     =     S   ,  E     E     E     /   R  U     d     [   =  6     @     2     I   D  D     ,     
        (  G   (  2   7)  Z   j)  D   )     (   -                 $   &   +   '   3   0         /                 2   %                                
                                 
          .         )                 1                  	                ,                    !   "   #   *      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 0.7.21
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2012-06-25 17:23+0300
Last-Translator: Damyan Ivanov <dmn@debian.org>
Language-Team: Bulgarian <dict@fsa-bg.org>
Language: bg
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1)
X-Generator: KBabel 1.11.4
   %s няма също и запис „binary override“
   %s няма запис „override“
   %s няма запис „source override“
   поддържащия пакета %s е %s, а не %s
 DeLink %s [%s]
 Превишен лимит на DeLink от %sB.
 *** Неуспех при създаването на връзка %s към %s Архивът няма поле „package“ В архива няма поле „control“ Не може да се извлече версията на debconf. Debconf инсталиран ли е? Процес-потомък за компресиране Компресираният изход %s изисква настройка за компресирането Невалиден формат на БД.  Ако сте обновили от по-стара версия на apt, премахнете базата от данни и я създайте наново. БД е стара, опит за актуализиране на %s БД е повредена, файлът е преименуван на %s.old E:  E: Грешките се отнасят за файла  Грешка при обработката на съдържание %s Грешка при обработката на директория %s Грешка при запазването на заглавната част във файла със съдържание Неуспех при създаването на IPC pipe към подпроцеса Неуспех при пускането на подпроцес Неуспех при отварянето на %s Неуспех при четенето на override файл %s Неуспех при четене докато се изчислява MD5 Неуспех при прочитането на връзка %s Неуспех при преименуването на %s на %s Неуспех при превръщането на %s Грешка при получаването на атрибути за %s В/И към подпроцеса/файла пропадна Вътрешна грешка, неуспех при създаването на %s Неправилно форматиран override %s, ред %llu #1 Неправилно форматиран override %s, ред %llu #2 Неправилно форматиран override %s, ред %llu #3 Няма съвпадения на избора Списъкът с разширения на пакети и твърде дълъг Липсват някои файлове от групата с файлови пакети „%s“ Списъкът с разширения на източници е твърде дълъг Неуспех при обхода на дървото Неуспех при получаването на курсор Неуспех при отварянето на %s Неуспех при отварянето на файл %s от БД: %s Непознат алгоритъм за компресия „%s“ Непознат запис за пакет! Употреба: apt-ftparchive [опции] команда
Команди:  packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents път
          release път
          generate config [групи]
          clean config

apt-ftparchive генерира индексни файлове за архиви на Дебиан. Поддържа
много стилове на генериране от напълно автоматично до функционални
замени на dpkg-scanpackages и dpkg-scansources.

apt-ftparchive генерира „Package“ файлове от дърво с .deb файлове. Файлът
„Package“ представлява съдържанието на всички контролни полета на всеки
пакет, както и MD5 хеш и размер на файла. Стойностите на полетата 
„Priority“ и „Section“ могат да бъдат изменени с файл „override“.

По подобен начин apt-ftparchive генерира „Sources“ файлове от дърво с .dsc 
файлове. Опцията --source-override може да се използва за указване на файл
„override“ за пакети с изходен код.

Командите „packages“ и „sources“ трябва да се изпълняват в корена на дървото.
BinaryPath трябва да сочи към основата, където започва рекурсивното търсене и
файла „override“ трябва да съдържа всички флагове за преназначаване. Pathprefix
се прибавя към полетата на файловите имена, ако съществува. Пример за употреба
от архива на Дебиан:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Опции:
  -h    Този помощен текст.
  --md5 Управление на генерирането на MD5.
  -s=?  Файл „override“ за пакети с изходен код.
  -q    Без показване на съобщения.
  -d=?  Избор на допълнителна база от данни за кеширане.
  --no-delink Включване на режим за премахване на връзки.
  --contents  Управление на генерирането на файлове със съдържание.
  -c=?  Четене на този конфигурационен файл.
  -o=?  Настройване на произволна конфигурационна опция W:  W: Неуспех при четенето на директория %s
 W: Неуспех при четенето на %s
 Изчака се завършването на %s, но той не беше пуснат realloc - Неуспех при заделянето на памет                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 T                      1      #   	  (   -     V     h         L  G   j  &     5             #                                        Archive has no control record Cannot get debconf version. Is debconf installed? DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old Failed to open %s Unknown package record! Project-Id-Version: apt 0.5.26
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2004-05-06 15:25+0100
Last-Translator: Safir Šećerović <sapphire@linux.org.ba>
Language-Team: Bosnian <lokal@lugbih.org>
Language: bs
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
 Arhiva nema kontrolnog zapisa Ne mogu odrediti verziju debconf programa. Da li je debconf instaliran? DB je stara, pokušavam nadogradnju %s DB je bila oštećena, datoteka preimenovana u %s.old Ne mogu otvoriti %s Nepoznat zapis paketa"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         2     !   +  )   M  $   w       '     #          "     F   ;       <          <   i  B          #     5     3   G  H   {  1             
  #   $  -   H  4   v  !     '          +     .   ;  5   j  ,     ,     ,     ?   '     g  9     D     4        4     J     i  1   |  (                           '     (  #  G)     k*  $   o*     *     *  2   *     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.4~beta1
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2020-08-09 22:43+0200
Last-Translator: Aleix Vidal i Gaya <aleix@softcatala.org>
Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>
Language: ca
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 2.2.1
X-Poedit-Bookmarks: 502,178,-1,-1,-1,-1,-1,-1,-1,-1
   %s tampoc no té una entrada dominant de binari
   %s no té una entrada dominant
   %s no té una entrada dominant de font
   el mantenidor de %s és %s, no %s
  DeLink %s [%s]
  S'ha arribat al límit DeLink de %sB.
 *** No s'ha pogut enllaçar %s a %s L'arxiu no té cap camp paquet L'arxiu no té registre de control No es pot determinar la versió de debconf. Està instal·lat debconf? Comprimeix el fill La sortida comprimida %s necessita un conjunt de compressió El format de la base de dades no és vàlid. Si heu actualitzat des d'una versió més antiga de l'apt, suprimiu la base de dades i torneu a crear-la. La base de dades és vella. S'està intentant actualitzar %s La base de dades està malmesa. S'ha reanomenat el fitxer a %s.old E:  E: Els errors s'apliquen al fitxer  S'ha produït un error en processar els continguts %s S'ha produït un error en processar el directori %s S'ha produït un error en escriure la capçalera al fitxer de continguts No s'ha pogut crear el conducte IPC al subprocés No s'ha pogut bifurcar No s'ha pogut obrir %s No s'ha pogut llegir el fitxer .dsc No s'ha pogut llegir el fitxer predominant %s No s'ha pogut llegir mentre es calculava la suma MD5 No s'ha pogut llegir l'enllaç %s No s'ha pogut canviar el nom de %s a %s No s'ha pogut resoldre %s S'ha produït un error en fer «stat» a %s Ha fallat l'E/S del subprocés sobre el fitxer S'ha produït un error intern. No s'ha pogut crear %s Línia predominant %s malformada %llu núm 1 Línia predominant %s malformada %llu núm 2 Línia predominant %s malformada %llu núm 3 Hi ha una sobreescriptura mal formada %s en la línia %llu (%s) Cap selecció coincideix La llista de les extensions dels paquets és massa llarga No es troben alguns fitxers dins del grup de fitxers del paquet `%s' La llista d'extensions de les fonts és massa llarga L'arbre està fallant No es pot aconseguir un cursor No es pot obrir %s No es pot obrir el fitxer de base de dades %s: %s Algorisme de compressió desconegut '%s' Registre del paquet desconegut! Forma d'ús: apt-dump-solver

apt-dump-solver és una interfície per emmagatzemar un escenari
EDSP en un fitxer i opcionalment enviar-lo a un altre solucionador.
 Forma d'ús: apt-extracttemplates fitxer1 [fitxer2 ...]

apt-extracttemplates és una eina per a extreure informació dels 
fitxers de configuració i plantilla dels paquets debian.
L'usa bàsicament debconf(1) per fer preguntes sobre la configuració
abans d'instal·lar els paquets
 %
 Forma d'ús: apt-ftparchive [opcions] ordre
Ordres:   packages camí_binaris [fitxer_substitucions prefix_camí]]
          sources camí_fonts [fitxer_substitucions [prefix_camí]]
          contents camí
          release camí
          generate config [grups]
          clean config

apt-ftparchive genera fitxers d'índex per als arxius de Debian.
Gestiona molts estils per a generar-los, des dels completament automàtics
als substituts funcionals per dpkg-scanpackages i dpkg-scansources.

apt-ftparchive genera fitxers Package des d'un arbre de .deb. El
fitxer Package conté tots els camps de control de cada paquet així com
la suma MD5 i la mida del fitxer. S'admeten els fitxers de substitució
per a forçar el valor de Prioritat i Secció.

De manera semblant, apt-ftparchive genera fitxers Sources des d'un arbre
de .dsc. Es pot utilitzar l'opció --source-override per a especificar un
fitxer de substitucions de src.

Les ordres «packages» i «sources» s'haurien d'executar a l'arrel de
l'arbre. CamíBinaris hauria de ser el punt base de la recerca recursiva
i el fitxer de substitucions hauria de contenir senyaladors de substitució.
Prefixcamí s'afegeix als camps del nom de fitxer si està present.
Exemple d'ús a l'arxiu de Debian:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Opcions:
  -h    Aquest text d'ajuda
  --md5 Generació del control MD5
  -s=?  Fitxer de substitucions per a fonts
  -q    Silenciós
  -d=?  Selecciona la base de dades de memòria cau opcional
  --no-delink Habilita el mode de depuració delink
  --contents  Genera el fitxer amb els continguts de control
  -c=?  Llegeix aquest fitxer de configuració
  -o=?  Estableix una opció de configuració arbitrària Forma d'ús: apt-internal-planner

apt-internal-planner és una interfície per usar el planificador
intern actual d'instal·lació, tant per la família APT com per una
externa, per depuració i d'altres.
 Forma d'ús: apt-internal-solver

apt-internal-solver és una interfície per usar el solucionador
intern actual, tant per la família APT com per una externa, 
per depuració i d'altres.
 Forma d'ús: apt-sortpkgs [opcions] fitxer1 [fitxer2 ...]

apt-sortpkgs és una senzilla eina per ordenar els fitxers
d'informació dels paquets. De forma predeterminada, els ordena
segons la informació del paquet binari, però es pot utilitzar l'opció
-s per ordenar-los segons l'origen.
 A:  A: No es pot llegir el directori %s
 A: No es pot fer «stat» %s
 S'esperava %s però no hi era realloc - No s'ha pogut assignar espai en memòria                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         7     )     3        E     a  "   x  #               >        8  3   L       '     0   ,     ]     a  $           ,     5        (     F     Y  +   o                             *   '  *   R  .   }  .     .     0   
     ;  1   W  9     5                  &      9  (   Z               1    ,     &     &     s'     i(     m(     (  !   (  -   (     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 2.5.6
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2023-02-10 12:58+0100
Last-Translator: Miroslav Kure <kurem@debian.cz>
Language-Team: Czech <debian-l10n-czech@lists.debian.org>
Language: cs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>=2 && n<=4 ? 1 : 2;
  %s nemá ani žádnou binární položku pro override
  %s nemá žádnou položku pro override
  %s nemá žádnou zdrojovou položku pro override
   správce %s je %s, ne %s
 Odlinkování %s [%s]
  Odlinkovací limit %sB dosažen.
 *** Nezdařilo se slinkovat %s s %s Archiv nemá pole Package Archiv nemá kontrolní záznam Nelze určit verzi programu debconf. Je debconf nainstalován? Komprimovat potomka Komprimovaný výstup %s potřebuje kompresní sadu Formát databáze je neplatný. Pokud jste přešli ze starší verze apt, databázi prosím odstraňte a poté ji znovu vytvořte. DB je stará, zkouším aktualizovat %s DB je porušená, soubor přejmenován na %s.old E:  E: Chyby se týkají souboru  Chyba při zpracovávání obsahu %s Chyba zpracování adresáře %s Chyba při zapisování hlavičky do souboru Selhalo vytvoření meziprocesové roury k podprocesu Volání fork() se nezdařilo Nelze otevřít %s Nelze přečíst .dsc Nezdařilo se přečíst override soubor %s Chyba čtení při výpočtu MD5 Nelze přečíst link %s Selhalo přejmenování %s na %s Chyba při zjišťování %s Nelze vyhodnotit %s V/V operace s podprocesem/souborem selhala Interní chyba, nezdařilo se vytvořit %s Zkomolený override soubor %s, řádek %llu #1 Zkomolený override soubor %s, řádek %llu #2 Zkomolený override soubor %s, řádek %llu #3 Zkomolený override soubor %s, řádek %llu (%s) Žádný výběr nevyhověl Seznam rozšíření balíku je příliš dlouhý Některé soubory chybí v balíkovém souboru skupiny %s Seznam zdrojových rozšíření je příliš dlouhý Průchod stromem selhal Nelze získat kurzor Nelze otevřít %s Nelze otevřít DB soubor %s: %s Neznámý kompresní algoritmus „%s“ Neznámý záznam o balíku! Použití: apt-dump-solver

apt-dump-solver slouží pro uložení EDSP scénáře do
souboru a případnému přeposlání jinému řešiteli.
 Použití: apt-extracttemplates soubor1 [soubor2 …]

apt-extracttemplates umí z balíků vytáhnout konfigurační skripty
a šablony. Využívá ho hlavně debconf(1) pro zobrazení některých
otázek ještě před samotnou instalací balíků.
 Použití: apt-ftparchive [volby] příkaz
Příkazy: packages binárnícesta [souboroverride [prefixcesty]]
         sources zdrojovácesta [souboroverride [prefixcesty]]
         contents cesta
         release cesta
         generate konfiguračnísoubor [skupiny]
         clean konfiguračnísoubor

apt-ftparchive generuje indexové soubory debianích archivů. Podporuje
několik režimů vytváření - od plně automatického až po funkční ekvivalent
příkazů dpkg-scanpackages a dpkg-scansources.

apt-ftparchive vytvoří ze stromu .deb souborů soubory Packages. Soubor
Packages obsahuje kromě všech kontrolních polí každého balíku také jeho
velikost a MD5 součet. Podporován je také soubor override, kterým můžete 
vynutit hodnoty polí Priority a Section.

Podobně umí apt-ftparchive vygenerovat ze stromu souborů .dsc soubory
Sources. Volbou --source-override můžete zadat zdrojový soubor override.

Příkazy „packages“ a „sources“ by se měly spouštět z kořene stromu.
BinárníCesta by měla ukazovat na začátek rekurzivního hledání a soubor 
override by měl obsahovat příznaky pro přepis. PrefixCesty, pokud je
přítomen, je přidán do polí Filename.
Reálný příklad na archivu Debianu:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Volby:
  -h          Tato nápověda
  --md5       Vygeneruje kontrolní MD5
  -s=?        Zdrojový soubor override
  -q          Tichý režim
  -d=?        Vybere volitelnou databázi pro vyrovnávací paměť
  --no-delink Povolí ladicí režim
  --contents  Vygeneruje soubor Contents
  -c=?        Načte tento konfigurační soubor
  -o=?        Nastaví libovolnou volbu Použití: apt-internal-planner

apt-internal-planner je rozhraní k aktuálnímu internímu plánovači
instalací, aby se dal použít jako externí nástroj, např. pro ladění.
 Použití: apt-internal-solver

apt-internal-solver je rozhraní k aktuálnímu internímu řešiteli
závislostí, aby se dal použít jako externí nástroj, např. pro ladění.
 Použtí: apt-sortpkgs [volby] soubor1 [soubor2 …]

apt-sortpkgs je jednoduchý nástroj pro setřídění souborů Packages.
Standardně řadí dle binárních balíků, ale volbou -s je možno
přepnout na řazení dle zdrojových balíků.
 W:  W: Nelze číst adresář %s
 W: Nelze vyhodnotit %s
 Čekali jsme na %s, ale nebyl tam realloc - Selhal pokus o přidělení paměti                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  &      L  5   |      P     Q     m                           1     ,   @  #   m  (               %     '        %     4  #   F  "   j                                "     5   :  !   p                                   	     )  #   ?    c  $        	     ,	     B	     b	  "   	  $   	  ;   	  8   
  (   =
  1   f
     
  %   
  /   
  *   
          ,  '   <      d                                '     9   >  +   x                          
     
  &   "
      I
     j
     	            
                                     %      #         
                           !           &                "                                     $                    %s has no override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown package record! W:  W: Unable to read directory %s
 W: Unable to stat %s
 realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2005-06-06 13:46+0100
Last-Translator: Dafydd Harries <daf@muse.19inch.net>
Language-Team: Welsh <cy@pengwyn.linux.org.uk>
Language: cy
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n==2) ? 1 : 0;
   Does dim cofnod gwrthwneud gan %s
   Cynaliwr %s yw %s nid %s
  DatGysylltu %s [%s]
   Tarwyd y terfyn cyswllt %sB.
 *** Methwyd cysylltu %s at %s Doedd dim maes pecyn gan yr archif Does dim cofnod rheoli gan yr archif Ni ellir cael fersiwn debconf. Ydi debconf wedi ei sefydlu? Mae'r allbwn cywasgiedig %s angen cywasgiad wedi ei osod Hen gronfa data, yn ceisio uwchraddio %s Llygrwyd y cronfa data, ailenwyd y ffeil i %s.old G:  G: Mae gwallau yn cymhwyso i'r ffeil  Gwall wrth ysgrifennu pennawd i'r ffeil cynnwys Methwyd creu pibell cyfathrebu at isbroses Methodd fork() Methwyd agor %s Methwydd darllen y ffeil dargyfeirio %s Methwyd darllen wrth gyfrifo MD5 Methwyd darllen y cyswllt %s Methwyd ailenwi %s at %s Methwyd datrys %s Methodd stat() o %s Methodd MA i isbroses/ffeil Dim dewisiadau'n cyfateb Mae'r rhestr estyniad pecyn yn rhy hir. Mae rhai ffeiliau ar goll yn y grŵp ffeiliau pecyn  `%s' Mae'r rhestr estyniad ffynhonell yn rhy hir Methwyd cerdded y goeden Ni ellir cael cyrchydd Ni ellir agor %s Ni ellir agor y ffeil DB2 %s: %s Cofnod pecyn anhysbys! Rh:  Rh: Ni ellir darllen y cyfeiriadur %s
 Rh: Ni ellir gwneud stat() o %s
 realloc - Methwyd neilltuo cof                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         H          E     '   H     p  '                      8        D  3   S  r     '     )   "     L     P  #   l  "     /     4             *     >  %   T  '   z                      "     "   /  %   R  %   x  %     ,          !     ,   &  !   S     u                  $                           $     %  
  E&     S'     W'     v'  $   '  (   '     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.4~rc2
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2017-03-02 23:51+0200
Last-Translator: Joe Hansen <joedalton2@yahoo.dk>
Language-Team: Danish <debian-l10n-danish@lists.debian.org>
Language: da
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
   %s har ingen linje med tilsidesættelse af standard for binøre filer
   %s har ingen tvangs-post
   %s har ingen linje med tilsidesættelse af standard for kildefiler
   pakkeansvarlig for %s er %s, ikke %s
  DeLink %s [%s]
  Nåede DeLink-begrænsningen på %sB.
 *** Kunne ikke lænke %s til %s Arkivet havde intet package-felt Arkivet har ingen kontrolindgang Kan ikke finde debconfs version. Er debconf installeret? Komprimer barn Komprimerede uddata %s kræver et komprimeringssæt Databaseformatet er ugyldigt. Hvis du har opgraderet fra en ældre version af apt, så fjern og genskab databasen. DB er gammel, forsøger at opgradere %s DB var ødelagt, filen omdøbt til %s.old F:  F: Fejlene vedrører filen  Fejl under behandling af indhold %s Fejl under behandling af mappen %s Fejl under skrivning af hovedet til indholdsfil Kunne ikke oprette IPC-videreførsel til underproces Kunne ikke spalte Kunne ikke åbne %s Kunne ikke læse .dsc Kunne ikke læse gennemtvangsfilen %s Kunne ikke læse under beregning af MD5 Kunne ikke »readlink« %s Kunne ikke omdøbe %s til %s Kunne ikke omsætte navnet %s Kunne ikke finde %s IO til underproces/fil mislykkedes Intern fejl. Kunne ikke oprette %s Ugyldig gennemtvangs %s-linje %llu #1 Ugyldig gennemtvangs %s-linje %llu #2 Ugyldig gennemtvangs %s-linje %llu #3 Ugyldig overskrivning af %s-linjen %llu (%s) Ingen valg passede Pakkeudvidelseslisten er for lang Visse filer mangler i pakkefilgruppen »%s« Kildeudvidelseslisten er for lang Trævandring mislykkedes Kunne skaffe en markør Kunne ikke åbne %s Kunne ikke åbne DB-filen %s: %s Ukendt komprimeringsalgoritme »%s« Ukendt pakkeindgang! Brug: apt-dump-solver

apt-dump-solver er en grænseflade til at lagre et EDSP-scenarie i
en fil og valgfrit videresende den til en anden problemløser.
 Brug: apt-extracttemplates fil1 [fil2 ...]

apt-extracttemplates bruges til at udtrække konfigurations- og
skabelonfiler fra Debianpakker. Programmet bruges derfor hovedsagelig
af debconf(1) til at stille konfigurationsspørgsmål før installationen
af pakker.
 Brug: apt-ftparchive [tilvalg] kommando
Kommandoer: packges binærsti [tvangsfil [sti]]
            sources kildesti [tvangsfil [sti]]
            contents sti
            release sti
            generate config [grupper]
            clean config

apt-ftparchive laver indeksfiler til Debianarkiver. Det understøtter 
mange former for generering, lige fra fuldautomatiske til funktionelle
erstatninger for dpkg-scanpackages og dpkg-scansources

apt-ftparchive genererer Package-filer ud fra træer af .deb'er.
Package-filen indeholder alle styrefelterne fra hver pakke såvel
som MD5-mønstre og filstørrelser. En tvangsfil understøttes til at
gennemtvinge indholdet af Priority og Section.

På samme måde genererer apt-ftparchive Sources-filer ud fra træer
med .dsc'er. Tvangstilvalget --source-override kan bruges til at
angive en src-tvangsfil.

Kommandoerne »packages« og »sources« skal køres i roden af træet.
binærsti skal pege på basen af rekursive søgninger og tvangsfilen
skal indeholde tvangsflagene. Sti foranstilles eventuelle
filnavnfelter. Et eksempel på brug fra Debianarkivet:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Tilvalg:
  -h    Denne hjælpetekst
  --md5 Styr generering af MD5
  -s=?  Kilde-tvangsfil
  -q    Stille
  -d=?  Vælg den valgfrie mellemlager-database
  --no-delink Aktivér "delinking"-fejlsporingstilstand
  --contents  Bestem generering af indholdsfil
  -c=?  Læs denne opsætningsfil
  -o=?  Sæt en opsætnings-indstilling Brug: apt-internal-planner

apt-internal-planner er en grænseflade, til at bruge den nuværende
interne installationsplanlægger for APT-familien såsom en ekstern,
til fejlsøgning eller lignende.
 Brug: apt-internal-solver

apt-internal-solver er en grænseflade, der skal bruge den nuværende
problemløser for APT-familien som en ekstern, til fejlsøgning eller
lignende
 Brug: apt-sortpkgs [tilvalg] fil1 [fil2 ...]

apt-sortpkgs er et simpelt værktøj til at sortere informationsfiler for
pakker. Som standard sorteres efter den binære pakkeinformation, men
tilvalget -s kan bruges til at skifte til kildepakkerækkefølge i stedet
for.
 A:  A: Kunne ikke læse mappen %s
 W: Kunne ikke finde %s
 Ventede på %s, men den var der ikke realloc - Kunne ikke allokere hukommelse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         6     /     6     #   >     b     s  ;     "     &     G        a  ;   |       9   m  6               &     *   &  8   Q  I                    .   $  6   S       '     "     '     '     0   D  )   u  )     )     +          #   5  5   Y  #     /     $     !     1   *  ,   \               c          '     p(  .  =)     l*  -   p*  ,   *  4   *  ,    +     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 2.5.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2023-01-20 16:58+0100
Last-Translator: Helge Kreutzmann <debian@helgefjell.de>
Language-Team: German <debian-l10n-german@lists.debian.org>
Language: de
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
   %s hat keinen Eintrag in der Binary-Override-Liste.
   %s hat keinen Eintrag in der Override-Liste.
   %s hat keinen Eintrag in der Source-Override-Liste.
   %s-Betreuer ist %s und nicht %s.
  DeLink %s [%s]
  DeLink-Limit von %sB erreicht
 *** Erzeugen einer Verknüpfung von %s zu %s fehlgeschlagen Archiv hatte kein Feld »package« Archiv hat keinen Steuerungsdatensatz. Debconf-Version konnte nicht ermittelt werden. Ist debconf installiert? Komprimierungs-Kindprozess Komprimierte Ausgabe %s benötigt einen Komprimierungssatz. Datenbankformat ist ungültig. Wenn Sie ein Upgrade (Paketaktualisierung) von einer älteren apt-Version gemacht haben, entfernen Sie bitte die Datenbank und erstellen Sie sie neu. Datenbank ist veraltet; es wird versucht, %s zu erneuern. Datenbank wurde beschädigt, Datei umbenannt in %s.old F:  F: Fehler gehören zu Datei  Fehler beim Verarbeiten der Inhalte %s Fehler beim Verarbeiten von Verzeichnis %s Fehler beim Schreiben der Kopfzeilen in die Inhaltsdatei Interprozesskommunikation mit Unterprozess konnte nicht aufgebaut werden. Fork fehlgeschlagen Öffnen von %s fehlgeschlagen Lesen von .dsc fehlgeschlagen Override-Datei %s konnte nicht gelesen werden. Lesevorgang während der MD5-Berechnung fehlgeschlagen readlink von %s fehlgeschlagen %s konnte nicht in %s umbenannt werden. %s konnte nicht aufgelöst werden. %s mit »stat« abfragen fehlgeschlagen E/A zu Kindprozess/Datei fehlgeschlagen Interner Fehler, %s konnte nicht erzeugt werden. Missgestaltetes Override %s Zeile %llu #1 Missgestaltetes Override %s Zeile %llu #2 Missgestaltetes Override %s Zeile %llu #3 Missgestaltetes Override %s Zeile %llu (%s) Keine Auswahl traf zu Paketerweiterungsliste ist zu lang. Einige Dateien fehlen in der Paketdateigruppe »%s«. Quellerweiterungsliste ist zu lang. Durchlaufen des Verzeichnisbaums fehlgeschlagen Unmöglich, einen Cursor zu bekommen %s konnte nicht geöffnet werden. Datenbankdatei %s kann nicht geöffnet werden: %s Unbekannter Komprimierungsalgorithmus »%s« Unbekannter Paketeintrag! Aufruf: apt-dump-solver

apt-dump-solver ist eine Schnittstelle zur Speicherung eines EDSP-Szenarios
in einer Datei sowie zur optionalen Weiterleitung an ein anderes Problemlöser-
Programm.
 Aufruf: apt-extracttemplates datei1 [datei2 …]

apt-extracttemplates wird verwendet, um Konfigurations- und Vorlagendateien
(Templates) aus Debian-Paketen zu extrahieren.
Es wird hauptsächlich von debconf(1) genutzt, um vor einer Installation
Fragen zur Paketkonfiguration anzuzeigen.
 Aufruf:  apt-ftparchive [optionen] befehl
Befehle: packages Binärpfad [Override-Datei [Pfadpräfix]]
         sources Quellpfad [Override-Datei [Pfadpräfix]]
         contents Pfad
         release Pfad
         generate Konfigurationsdatei [Gruppen]
         clean Konfigurationsdatei

apt-ftparchive erstellt Indexdateien für Debian-Archive. Es unterstützt viele
verschiedene Arten der Erstellung, von vollautomatisch bis hin zu den
funktionalen Äquivalenten von dpkg-scanpackages und dpkg-scansources.

apt-ftparchive erstellt Package-Dateien aus einem Baum von .debs. Die Package-
Datei enthält den Inhalt aller Steuerfelder aus jedem Paket sowie einen MD5-
Hashwert und die Dateigröße. Eine Override-Datei wird unterstützt, um Werte für
Priorität und Bereich (Section) zu erzwingen.

Auf ganz ähnliche Weise erstellt apt-ftparchive Sources-Dateien aus einem Baum
von .dscs. Die Option --source-override kann benutzt werden, um eine Override-
Datei für Quellen anzugeben.

Die Befehle »packages« und »source« sollten von der Wurzel des Baums aus
aufgerufen werden. Binärpfad sollte auf die Basis der rekursiven Suche zeigen
und Override-Datei sollte die Override-Flags enthalten. Pfadpräfix wird, so
vorhanden, jedem Dateinamen vorangestellt. Beispielaufruf im Debian-Archiv:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Optionen:
  -h           dieser Hilfe-Text
  --md5        MD5-Hashes erzeugen
  -s=?         Override-Datei für Quellen
  -q           ruhig
  -d=?         optionale Zwischenspeicher-Datenbank auswählen
  --no-delink  Debug-Modus für Delinking aktivieren
  --contents   Inhaltsdatei erzeugen
  -c=?         diese Konfigurationsdatei lesen
  -o=?         eine beliebige Konfigurationsoption setzen Aufruf: apt-internal-planer

apt-internal-planer ist eine Schnittstelle, um den derzeitigen internen
Installations-Planer aus der APT-Familie wie einen externen zu verwenden,
zwecks Fehlersuche oder ähnlichem.
 Aufruf: apt-internal-solver

apt-internal-solver ist eine Schnittstelle, um den derzeitigen internen
Problemlöser aus der APT-Familie wie einen externen zu verwenden, zwecks
Fehlersuche oder ähnlichem.
 Aufruf: apt-sortpkgs [Optionen] datei1 [datei2 …]

apt-sortpkgs ist ein einfaches Werkzeug zur Sortierung von Paketinformations-
dateien. Standardmäßig sortiert es nach binären Paketinformationen, aber die
Option -s kann verwendet werden, um stattdessen nach Quellpaketinformationen
zu sortieren.
 W:  W: Verzeichnis %s kann nicht gelesen werden.
 W: %s mit »stat« abfragen nicht möglich.
 Es wurde auf %s gewartet, war jedoch nicht vorhanden realloc - Speicheranforderung fehlgeschlagen                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        /        C           )        C  "   _                                1   #     U  ,   d  #     (                         %   6  '   \            #     "                       1     C  #   `       "     5     !             )     @     R  "   p       &                   !     #   .    R     *  J          b          v               u          9                  z     5  v   =  b     z             ,  f     b   ~          w  w   ,       w   -  q               Z   K            O!     "     "  <   Z#  ,   #  i   #  Y   .$  Z   $  o  $     S8  X   d8  M   8     9     9     )                              (   $             !         .      ,                              	      '         
       %       &                                  -         +          #       "                        *   
         /      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2006-09-19 09:49+0530
Last-Translator: Kinley Tshering <gasepkuenden2k3@hotmail.com>
Language-Team: Dzongkha <pgeyleg@dit.gov.bt>
Language: dz
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2;plural=(n!=1)
X-Poedit-Language: Dzongkha
X-Poedit-Country: Bhutan
X-Poedit-SourceCharset: utf-8
   %sལུ་ཟུང་ལྡན་མེདཔ་གཏང་ནིའི་་ཐོ་བཀོད་གང་རུང་ཡང་མིན་འདུག།
   %sལུ་ཟུར་བཞག་ཐོ་བཀོད་མེད།
   %s ལུ་འབྱུང་ཁུངས་མེདཔ་གཏང་ནིའི་ཐོ་བཀོད་འདི་མེད།
   %s ་རྒྱུན་སྐྱོང་པ་འདི་  %s ཨིན་   %s མེན།
  DeLink %s [%s]
 %sB་ཧེང་བཀལ་བཀྲམ་ནིའི་འབྲེལ་མེད་བཅད་མཚམས།
 *** %s་ལས་%sལུ་འབྲེལ་འཐུད་འབད་ནི་འཐུས་ཤོར་བྱུང་ཡོདཔ། ཡིག་མཛོད་ལུ་ཐུམ་སྒྲིལ་ཅི་ཡང་འཐུས་ཤོར་མ་བྱུང་། ཡིག་མཛོད་འདི་ལུ་ཚད་འཛིན་དྲན་ཐོ་མིན་འདུག debconf ་་འཐོན་རིམ་འདི་ལེན་མ་ཚུགས། debconf འདི་གཞི་བཙུགས་འབད་ཡི་ག་? ཆ་ལག་ཨེབ་བཙུགས་འབད། ཨེབ་བཙུགས་འབད་ཡོད་པའི་ཨའུཊི་པུཊི་%sལུ་ཨེབ་བཙུགས་ཆ་ཚན་ཅིག་དགོཔ་འདུག ཌི་བི་འདི་རྙིངམ་ཨིན་པས་  %s་ཡར་བསྐྱེད་འབད་ནིའི་དོན་ལུ་དཔའ་བཅམ་དོ། ཌི་བི་ངན་ཅན་བྱུང་ནུག་   %s.རྒསཔ་ལུ་ཡིག་སྣོད་འདི་བསྐྱར་མིང་བཏགས་ཡི། ཨི: ཨི:འཛོལ་བ་ཚུ་ཡིག་སྣོད་ལུ་འཇུག་སྤྱོད་འབད། %sའཛོལ་བ་ལས་སྦྱོར་འབད་ནིའི་ནང་དོན། སྣོད་ཐོ་%s་ལས་སྦྱོར་འབདཝ་ད་འཛོལ་བ་འཐོན་ཡི། ནང་དོན་ཡིག་སྣོད་ལུ་མགོ་ཡིག་འཛོལ་བ་འབྲི་ནིའི་མགོ་ཡིག ཡན་ལག་ལས་སྦྱོར་ལུ་ཨའི་པི་སི་རྒྱུད་དུང་གསར་བསྐྲུན་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ། ཁ་སྤེལ་འབད་ནི་ལུ་འཐུ་ཤོར་བྱུང་ཡོད། %s་ག་ཕྱེ་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ། ཟུར་བཞག་ཡིག་སྣོད་%sའདི་ལྷག་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད། ཨེམ་ཌི་༥་གློག་རིག་རྐྱབ་པའི་སྐབས་ལྷག་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད། %s་འབྲེལ་ལམ་ལྷག་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ། %s་ལུ་%s་བསྐྱར་མིང་བཏགས་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད། %s་མོས་མཐུན་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ། %s་སིཊེཊི་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ། ཡན་ལག་ལས་སྦྱོར་ལུ་IO/ཡིག་སྣོད་འཐུས་ཤོར་བྱུང་ཡོད། ནང་འཁོད་འཛོལ་བ་ %s་གསར་བསྐྲུན་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད། སེལ་འཐུ་ཚུ་མཐུན་སྒྲིག་མིན་འདུག ཐུམ་སྒྲིལ་རྒྱ་བསྐྱེད་ཐོག་ཡིག་འདི་གནམ་མེད་ས་མེད་རིངམ་འདུག ཡིག་སྣོད་ལ་ལུ་ཅིག་ཐུམ་སྒྲིལ་ཡིག་སྣོད་སྡེ་ཚན་`%s'ནང་བརླག་སྟོར་ཞུགས་ནུག འབྱུང་ཁུངས་རྒྱ་བསྐྱེད་ཀྱི་ཐོག་ཡིག་འདི་གནམ་མེད་ས་མེད་རིང་པས། རྩ་འབྲེལ་ཕྱིར་བགྲོད་འབད་ནི་ལུ་འཐུ་ཤོར་བྱུང་ཡོདཔ། འོད་རྟགས་ལེན་མ་ཚུགས། %s་ཁ་ཕྱེ་མ་ཚུགས། %s: %s་ཌི་བི་ཡིག་སྣོད་འདི་ཁ་ཕྱེ་མ་ཚུགས།  མ་ཤེས་ཨེབ་བཙུགས་ཨཱལ་གོ་རི་དམ'%s' མ་ཤེས་པའི་ཐུམ་སྒྲིལ་གི་དྲན་ཐོ། ལག་ལེན:apt-ftparchive [options] command
བརྡ་བཀོད་ཚུ:packages binarypath [overridefile [pathprefix]]
sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive་འདི་གིས་ ཌི་བི་ཡཱན་ཡིག་མཛོད་ཚུ་གི་དོན་ལུ་ ཚིག་ཡིག་གི་ཡིག་སྣོད་ཚུ་བཟོ་བཏོན་འབདཝ་ཨིན། dpkg-scanpackages དང་ dpkg-scansources་གི་དོན་ལུ་ལས་འགན་ཚབ་མ་ཚུ་ལུ་ཆ་ཚང་སྦེ་  རང་བཞིན་གྱི་སྦེ་བཟོ་བཟོཝ་་ནང་ལས་བཟོ་བཏོན་གྱི་བཟོ་རྣམ་ཚུ་ལྷམ་པ་མ་འདྲཝ་སྦེ་ཡོད་མི་ལུ་རྒྱབ་སྐྱོར་འབདཝ་ཨིན།

apt-ftparchive་ འདི་གིས་.debs་གི་རྩ་འབྲེལ་ཅིག་ནང་ལས་ཐུམ་སྒྲིལ་གྱི་ཡིག་སྣོད་ཚུ་བཟོ་བཏོན་འབདཝ་ཨིན། ཐུམ་སྒྲིལ་
 ཡིག་སྣོད་འདི་གི་ནང་ན་ ཐུམ་སྒྲིལ་རེ་རེ་བཞིན་ནང་གི་ཚད་འཛིན་ས་སྒོ་ཚུ་ཆ་མཉམ་གི་ནང་དོན་དང་ ཨེམ་ཌི་༥་དྲྭ་རྟགས། (#)་དང་ཡིག་སྣོད་ཀྱི་ཚད་ཚུ་ཡང་ཡོདཔ་ཨིན། ཟུར་བཞག་ཡིག་སྣོད་འདི་
གཙོ་རིམ་དང་དབྱེ་ཚན་གྱི་གནས་གོང་དེ་བང་བཙོང་འབད་ནི་ལུ་རྒྱབ་སྐྱོར་འབད་ཡོདཔ་ཨིན།

འདི་དང་ཆ་འདྲཝ་སྦེ་ apt-ftparchive་ འདི་གིས་.dscs་གི་རྩ་འབྲེལ་ཅིག་ནང་ལས་འབྱུང་ཁུངས་ཡིག་སྣོད་ཚུ་བཟོ་བཏོན་འབདཝ་ཨིན།
 --source-ཟུར་བཞག་གི་གདམ་ཁ་འདི་ ཨེསི་ཨར་སི་ ཟུར་བཞག་ཡིག་སྣོད་ཅིག་གསལ་བཀོད་འབད་ནི་ལུ་ལག་ལེན་འཐབ་བཐུབ་ཨིན།

'ཐུམ་སྒྲིལ་ཚུ་'་དང་'འབྱུང་ཁུངས་་' བརྡ་བཀོད་ཚུ་རྩ་འབྲེལ་འདི་གི་་རྩ་བ་ནང་ལུ་སྦེ་གཡོག་བཀོལ་དགོཔ་ཨིན། ཟུང་ལྡན་འགྲུལ་ལམ་འདི་གིས་ལོག་རིམ་འཚོལ་ཞིབ་འདི་གི་གཞི་རྟེན་ལུ་དཔག་དགོཔ་ཨིནམ་དང་
ཟུར་བཞག་ཡིག་སྣོད་འདི་ལུ་ཟུར་བཞག་གི་ཟུར་རྟགས་འོང་དགོཔ་ཨིན། འགྲུལ་ལམ་སྔོན་ཚིག་འདི་
ཡོད་པ་ཅིན་ཡིག་སྣོད་མིང་གི་ས་སྒོ་ཚུ་ལུ་འཇུག་སྣོན་འབད་དེ་ཡོདཔ་ཨིན། དཔེར་ན་ ཌི་བི་ཡཱན་ཡིག་མཛོད་ལས་ལག་ལེན་བཟུམ:
apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

གདམ་ཁ་ཚུ:
  -h    འདི་གིས་ཚིག་ཡིག་ལུ་གྲོགས་རམ་འབདཝ་ཨིན།
  --md5 ཨེམ་ཌི་༥་ བཟོ་བཏོན་འདི་ཚད་འཛིན་འབདཝ་ཨིན།
  -s=?  འབྱུང་ཁུངས་ཟུར་བཞག་གི་ཡིག་སྣོད།
  -q    ཁུ་སིམ་སིམ།
  -d=?  གདམ་ཁ་ཅན་གྱི་འདྲ་མཛོད་གནད་སྡུད་གཞི་རྟེན་འདི་སེལ་འཐུ་འབད།
  --no-delink འབྲེལ་ལམ་མེད་སྦེ་བཟོ་་ནིའི་རྐྱེན་སེལ་ཐབས་ལམ་འདི་ལྕོགས་ཅན་བཟོ།
  --contents  ནང་དོན་གི་ཡིག་སྣོད་བཟོ་བཏོན་འདི་ཚད་འཛིན་འབད།
  -c=?  འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷག
  -o=?  མཐུན་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་ཁ་ཅིག་གཞི་སྒྲིག་འབད། ཌབ་ལུ: ཌབ་ལུ:%sསྣོད་ཐོ་འདི་ལྷག་མ་ཚུགས།
 ཌབ་ལུ་ %s སིཊེཊི་འབད་མ་ཚུགས།
 %s་གི་དོན་ལུ་བསྒུག་སྡོད་ཅི་ འདི་འབདཝ་ད་ཕར་མིན་འདུག དྲན་ཚད་སྤྲོད་ནིའི་དོན་ལུ་ རི་ཨེ་ལོཀ་ འཐུས་ཤོར་བྱུང་ཡོད།                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       8        O           )          "        B     `     q                 1          ,   $  m   Q  #     (                  )     F  %   d  '                    #     "        .     D     ^     s       #     "     "     "   	  $   /	     T	  "   j	  5   	  !   	     	     	     
     "
  "   @
     c
     {
  &  j          I                 !   -  #   O    s  S   #  A   w  H     8        ;  1   Z  8     I     I     i   Y  !     k        Q     R  k        >  (   B  H   k  B     ]     r   U  '     /     (      Q   I  L     -     ;     (   R  E   {  F     R     K   [  K     K     E   ?  1     m     U   %   i   {   #      4   	!  ,   >!  Q   k!  =   !  -   !    )"    #  (  .  &  0     .1  D   21  H   w1  C   1  9   2     +   #      
      4                            3           	                 1              /                
   $   .         )             *          !   5       8         "   '                  2   ,                    6       7   &                 (   -      0       %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2020-12-30 12:20+0200
Last-Translator: Vangelis Skarmoutsos <skarmoutsosv@gmail.com>
Language-Team: Greek <debian-l10n-greek@lists.debian.org>
Language: el
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Poedit 2.4.2
Plural-Forms: nplurals=2; plural=(n != 1);
   %s δεν έχει ούτε εγγραφή δυαδικής παράκαμψης
   %s δεν περιέχει εγγραφή παράκαμψης
   %s δεν έχει εγγραφή πηγαίας παράκαμψης
   %s συντηρητής είναι ο %s όχι ο %s
  Αποσύνδεση %s [%s]
  Αποσύνδεση ορίου του %sB hit.
 Αποτυχία σύνδεσης του %s με το %s Η αρχειοθήκη δεν περιέχει πεδίο πακέτων Η αρχειοθήκη δεν περιέχει πεδίο ελέγχου Δεν βρέθηκε η έκδοση του debconf. Είναι το debconf εγκατεστημένο; Συμπίεση απογόνου Η συμπιεσμένη έξοδος του %s χρειάζεται καθορισμό συμπίεσης Η μορφή της βάσης δεν είναι έγκυρη. Εάν αναβαθμίσατε το apt από παλαιότερη έκδοση, παρακαλώ αφαιρέστε και ξαναδημιουργήστε τη βάση δεδομένων. Η βάση δεν είναι ενημερωμένη, γίνεται προσπάθεια να αναβαθμιστεί το %s Η βάση είναι κατεστραμμένη, το αρχείο μετονομάστηκε σε %s.old E:  E: Σφάλματα στο αρχείο  Σφάλμα επεξεργασίας περιεχομένων του %s Σφάλμα επεξεργασίας του καταλόγου %s Σφάλμα εγγραφής κεφαλίδων στο αρχείο περιεχομένων Αποτυχία κατά τη δημιουργία διασωλήνωσης IPC στην υποδιεργασία Αποτυχία αγκίστρωσης Αποτυχία ανοίγματος του %s Αποτυχία ανάγνωσης .dsc Αποτυχία ανάγνωσης του αρχείου παράκαμψης %s Αποτυχία ανάγνωσης κατά τον υπολογισμό MD5 Αποτυχία ανάγνωσης του %s Αποτυχία μετονομασίας του %s σε %s Αδύνατη η εύρεση του %s Αποτυχία εύρεσης της κατάστασης του %s απέτυχε η Ε/Ε στην υποδιεργασία/αρχείο Εσωτερικό Σφάλμα, Αποτυχία δημιουργίας του %s Κακογραμμένη παρακαμπτήρια %s γραμμή %llu #1 Κακογραμμένη παρακαμπτήρια %s γραμμή %llu #2 Κακογραμμένη παρακαμπτήρια %s γραμμή %llu #3 Κακογραμμένη παράκαμψη %s γραμμή %llu (%s) Δεν ταιριαξε καμία επιλογή Ο κατάλογος επεκτάσεων του πακέτου είναι υπερβολικά μακρύς Λείπουν μερικά αρχεία από την ομάδα πακέτων '%s' Ο κατάλογος επεκτάσεων των πηγών είναι υπερβολικά μακρύς Αποτυχία ανεύρεσης Αδύνατη η πρόσβαση σε δείκτη Αδύνατο το άνοιγμα του %s Το άνοιγμά του αρχείου της βάσης %s: %s απέτυχε Άγνωστος Αλγόριθμος Συμπίεσης '%s' Άγνωστη εγγραφή πακέτου! Χρήση: apt-extracttemplates αρχείο1 [αρχείο2 ...]

το apt-extracttemplates χρησιμοποιείται για να εξάγετε αρχεία προτύπων
και ρυθμίσεις από πακέτα debian. Χρησιμοποιείται κυρίως από το debconf(1)
για προτροπή ερωτήσεων προσαρμογής πριν την εγκατάσταση πακέτων.
 Χρήση: apt-ftparchive [επιλογές] εντολή
Εντολές: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

Το apt-ftparchive παράγει αρχεία περιεχομένων για τις αρχειοθήκες Debian
Υποστηρίζει πολλές παραλλαγές παραγωγής, από απόλυτα αυτοματοποιημένες έως
λειτουργικές αντικαταστάσεις για την dpkg-scanpackages και dpkg-scansources

Το apt-ftparchive παράγει αρχεία Package από ένα σύνολο αρχείων .debs. Στο
αρχείο Package περιέχονται όλα τα πεδία ελέγχου κάθε πακέτου καθώς και
το μέγεθος τους και το MD5 hash. Υποστηρίζει την ύπαρξη αρχείου παράκαμψης
για τη βεβιασμένη αλλαγή των πεδίων Priority (Προτεραιότητα) και Section
(Τομέας).

Με τον ίδιο τρόπο, το apt-ftparchive παράγει αρχεία πηγών (Sources) από μια
ιεραρχία αρχείων .dsc. Η επιλογή --source-override μπορεί να χρησιμοποιηθεί
για παράκαμψη των αρχείων πηγών src.

Οι εντολές 'packages' και 'sources' θα πρέπει να εκτελούνται στον βασικό
κατάλογο της ιεραρχίας.Το BinaryPath θα πρέπει να δείχνει στον αρχικό
κατάλογο που θα ξεκινάει η αναδρομική αναζήτηση και το αρχείο παράκαμψης
θα πρέπει να περιέχει τις επιλογές παράκαμψης. Το Pathprefix προστίθεται στα
πεδία όνομάτων αρχείων, αν υπάρχει. Δείτε παράδειγμα χρήσης στην αρχειοθήκη
πακέτων του Debian :
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Επιλογές:
  -h    Αυτό το κείμενο βοηθείας
  --md5 Έλεγχος παραγωγής MD5
  -s=?  αρχείο παράκαμψης πηγών
  -q    Χωρίς έξοδο
  -d=?  Επιλογή προαιρετικής βάσης δεδομένων cache
  --no-delink Αποσφαλμάτωση του delinking
  --contents  Έλεγχος παραγωγής αρχείου περιεχομένων
  -c=?  Χρήση αυτού του αρχείου ρυθμίσεων
  -o=?  Ορισμός αυθαίρετης επιλογής ρύθμισης Χρήση: apt-internal-planner

το apt-internal-planner είναι μια διεπαφή για χρήση του τρέχοντος
installation planner για την οικογένεια APT, όπως ένα εξωτερικό,
για αποσφαλμάτωση και τα σχετικά.
 Χρήση: apt-internal-solver

Το apt-internal-solver είναι μια διεπαφή για χρήση του τρέχοντος εσωτερικού
resolver για την οικογένεια APT, όπως ένα εξωτερικό, για αποσφαλμάτωση ή
σχετικά.
 W:  W: Αδύνατη η ανάγνωση του καταλόγου  %s
 W: Αδύνατη η εύρεση της κατάστασης του %s
 Αναμονή του %s, αλλά δε βρισκόταν εκεί realoc - Αδυναμία εκχώρησης μνήμης                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       8        O           )          "        B     `     q                 1          ,   $  m   Q  #     (                  )     F  %   d  '                    #     "        .     D     ^     s       #     "     "     "   	  $   /	     T	  "   j	  5   	  !   	     	     	     
     "
  "   @
     c
     {
  &  j          ;     -     1     Q  !   g  #     	    3   a  #     -     "        
  )        E  "   c  &     H          <        D  &     ,        %   !   )      K   !   j   4      2               !     !  +   9!  )   e!     !     !     !     !  !   !  "   "  (   4"  (   ]"  (   "  *   "     "  5   "  A   ,#  4   n#  "   #     #     #  %   #  +   $  "   I$  $  l$  m  %     ,  G  -     .  !   .     /  &   1/  "   X/     +   #      
      4                            2           	                 1              /                
   $   .         )             *          !   5       8         "   '                      ,                    6       7   &                 (   -      0   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 0.8.10
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2016-01-26 01:51+0100
Last-Translator: Manuel "Venturi" Porras Peralta <venturi@openmailbox.org>
Language-Team: Español; Castellano <debian-l10n-spanish@lists.debian.org>
Language: es
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-POFile-SpellExtra: BD getaddrinfo dist show xvcg Filename sources cachés
X-POFile-SpellExtra: dumpavail apport scanpackages yes pts URIs upgrade
X-POFile-SpellExtra: Hash TAR mmap fix Immediate li source add Pathprefix
X-POFile-SpellExtra: ftparchive policy main URIS qq Resolve Incoming
X-POFile-SpellExtra: NewFileVer depends get libc GPG URI sdiversions
X-POFile-SpellExtra: Length Limit PASS ConfFile NewVersion showpkg IPC
X-POFile-SpellExtra: Super unmet APT registrable NewPackage AddDiversion
X-POFile-SpellExtra: dists release dselect dir Hmmm debconf force dump ej
X-POFile-SpellExtra: list Section GraphViz Priority FindPkg gencaches
X-POFile-SpellExtra: Valid remove Ign DEB PORT LoopBreak tmp ftp
X-POFile-SpellExtra: AutoRemover stats AF Until delink unmarkauto firms
X-POFile-SpellExtra: ref Dpkg tar autoremove Obj missing update binary
X-POFile-SpellExtra: sobreescribe proxy org packages debs generate MD
X-POFile-SpellExtra: search ProxyLogin limin AllUpgrade Md Range dotty Pre
X-POFile-SpellExtra: NewFileDesc empaquetamiento root realloc gpgv apt
X-POFile-SpellExtra: pkgnames Release BinaryPath old DeLink showauto
X-POFile-SpellExtra: pkgProblemResolver parseable nstall
X-POFile-SpellExtra: desempaquetamiento script DESACTUALIZARÁN
X-POFile-SpellExtra: InstallPackages PreDepende lu sobreescribir Packages
X-POFile-SpellExtra: shell desincronizado override MaxReports cdrom dpkg
X-POFile-SpellExtra: socket info md Force temp dep CollectFileProvides
X-POFile-SpellExtra: spartial scansources Only dev purge nfs Intro install
X-POFile-SpellExtra: deb Sobreescribiendo openpty USER UsePackage vd
X-POFile-SpellExtra: markauto DB DropNode Content rdepends conf zu hash
X-POFile-SpellExtra: check contents paq Err Sources MMap lih decompresor
X-POFile-SpellExtra: build config EPRT http Package liseg dscs Remove
X-POFile-SpellExtra: sortpkgs sB man extracttemplates bzr potato clear
X-POFile-SpellExtra: autoclean showsrc desactualizados clean gzip TYPE
X-POFile-SpellExtra: sinfo Acquire
X-Generator: Gtranslator 2.91.7
  %s tampoco tiene una entrada binaria predominante
  %s no tiene entrada de predominio
  %s no tiene una entrada fuente predominante
  el encargado de %s es %s y no %s
  DeLink %s [%s]
  DeLink se ha llegado al límite de %sB.
 *** No pude enlazar %s con %s Archivo no tiene campo de paquetes No hay registro de control del archivo No se puede encontrar la versión de debconf. ¿Está debconf instalado? Hijo compresión Salida comprimida %s necesita una herramienta de compresión El formato de la base de datos no es válido. Debe eliminar y recrear la base de datos si vd. se actualizó de una versión anterior de apt. DB anticuada, intentando actualizar %s BD dañada, se renombró el archivo a %s.old E:  E: Errores aplicables al archivo  Error procesando contenidos %s Error procesando el directorio %s Error escribiendo cabeceras de archivos de contenido Fallo al crear una tubería IPC para el subproceso No se pudo bifurcar No se pudo abrir %s No se pudo leer el enlace %s No se pudo leer el fichero de predominio %s No se pudo leer mientras se computaba MD5 No se pudo leer el enlace %s Fallo al renombrar %s a %s No se pudo resolver %s Fallo al leer %s Falló la ES a subproceso/archivo Error interno, no se pudo crear %s Predominio mal formado %s línea %llu #1 Predominio mal formado %s línea %llu #2 Predominio mal formado %s línea %llu #3 Predominio mal formado %s línea %llu (%s) Ninguna selección coincide La lista de extensión de paquetes es demasiado larga Faltan algunos archivos en el grupo de archivo de paquetes «%s» La lista de extensión de fuentes es demasiado larga Falló el recorrido por el árbol. No se pudo obtener un cursor No se pudo abrir %s No se pudo abrir el archivo DB %s: %s Algoritmo desconocido de compresión «%s» ¡Registro de paquete desconocido! Uso: apt-extracttemplates fichero1 [fichero2 ...]

apt-extracttemplates se utiliza para extraer los ficheros de
configuración y de plantilla de los paquetes debian. Lo utiliza
principalmente debconf(1) para realizar las preguntas de configuración
previas a la instalación de los paquetes.
 Uso: apt-ftparchive [opciones] orden
Comandos: packages ruta-binaria [archivo-predominio
                                      [prefijo-ruta]]
          sources ruta-fuente [archivo-predominio 
                                     [prefijo-ruta]]
          contents ruta
          release ruta
          generate config [grupos]
          clean config

apt-ftparchive genera índices para archivos de Debian. Soporta
varios estilos de generación de reemplazos desde los completamente
automatizados a los funcionales para dpkg-scanpackages y dpkg-scansources.

apt-ftparchive genera ficheros Package de un árbol de .debs. El fichero
Package contiene los contenidos de todos los campos de control de cada
paquete al igual que la suma MD5 y el tamaño del archivo. Se puede usar
un archivo de predominio para forzar el valor de Priority y
Section.

Igualmente, apt-ftparchive genera ficheros Sources para un árbol de
.dscs. Se puede utilizar la opción --source-override para especificar un
fichero de predominio de fuente.

Las órdenes «packages» y «sources» deben ejecutarse en la raíz del
árbol. BinaryPath debe apuntar a la base de la búsqueda
recursiva, y el archivo de predominio debe de contener banderas de
predominio. Se añade Pathprefix a los campos de nombre de fichero
si existen. A continuación se muestra un ejemplo de uso basado en los 
archivos de Debian:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \\
               dists/potato/main/binary-i386/Packages

Opciones:
  -h    Este texto de ayuda
  --md5 Generación de control MD5 
  -s=?  Archivo fuente de predominio
  -q    Silencioso
  -d=?  Selecciona la base de datos de caché opcional 
  --no-delink Habilita modo de depuración delink
  --contents  Generación del contenido del archivo «Control»
  -c=?  Lee este archivo de configuración
  -o=?  Establece una opción de configuración arbitraria Uso: apt-internal-solver

apt-internal-solver es una interfaz para utilizar el resolutor
interno actual para la familia APT como uno externo, para depuración o
similares.
 Uso: apt-sortpkgs [opciones] fichero1 [fichero2 ...]

apt-sortpkgs es una herramienta sencilla para ordenar los ficheros de
información de los paquetes. De forma predeterminada, ordena por
la información del paquete binario, pero se puede utilizar la opción
-s para cambiar a ordenación por origen del paquete en su lugar.
 A:  A: No se pudo leer directorio %s
 A: No se pudo leer %s
 Se esperaba %s pero no estaba presente realloc - No pudo reservar memoria                                                                                                                                          /        C           )        C  "   _                                1   #     U  ,   d  #     (                         %   6  '   \            #     "                       1     C  #   `       "     5     !             )     @     R  "   p       &                   !     #   .    R  *         #  ,   D  $   q       "     &          %     <   7     t  5     ;     ?        7  "   ;     ^  #   ~  -     >             '  /   B     r  "     +          %     *     #   I     m  %     ;     '             7     T  )   e  "                 x  #   |       !     )        )                              (   $             !         .      ,                              	      '         
       %       &                                  -         +          #       "                        *   
         /      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2009-05-17 00:41+0200
Last-Translator: Piarres Beobide <pi@beobide.net>
Language-Team: Euskara <debian-l10n-basque@lists.debian.org>
Language: eu
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: KBabel 1.11.4
Plural-Forms: nplurals=2; plural=(n != 1)
   %s: ez du bitar gainidazketa sarrerarik
   %s: ez du override sarrerarik
   %s: ez du jatorri gainidazketa sarrerarik
   %s mantentzailea %s da, eta ez %s
  DeLink %s [%s]
  DeLink-en mugara (%sB) heldu da.
 *** Ezin izan da %s %s(r)ekin estekatu Artxiboak ez du pakete eremurik Artxiboak ez du kontrol erregistrorik Ezin da debconf bertsioa eskuratu. Debconf instalatuta dago? Konprimatu Umeak %s irteera konprimituak konpresio-tresna bat behar du Datu-basea zaharra da; %s bertsio-berritzen saiatzen ari da Datu-basea hondatuta dago; fitxategiari %s.old izena jarri zaio E:  E: Erroreak fitxategiari dagozkio  Errorea edukiak prozesatzean %s Errorea direktorioa prozesatzean %s Errorea eduki fitxategiaren goiburua idaztean Huts egin du azpiprozesuarentzako IPC kanalizazio bat sortzean Huts egin du sardetzean Huts egin du %s irekitzean Huts egin du %s override fitxategia irakurtzean Huts egin du MD5 konputatzean Huts egin du %s esteka irakurtzean Huts egin du %s izenaren ordez %s ipintzean Huts egin du %s ebaztean Huts egin du %s(e)tik datuak lortzean Huts egin du azpiprozesu/fitxategiko S/Iak Barne Errorea, Huts %s sortzerakoan Ez dago bat datorren hautapenik Pakete luzapenen zerrenda luzeegia da Fitxategi batzuk falta dira `%s' pakete fitxategien taldean Iturburu luzapenen zerrenda luzeegia da Huts egin dute zuhaitz-urratsek Ezin da kurtsorerik eskuratu Ezin da %s ireki Ezin da ireki %s datu-base fitxategia: %s '%s' Konpresio Algoritmo Ezezaguna Pakete erregistro ezezaguna! Erabilera: apt-ftparchive [aukerak] komandoa
Komandoak: packages binarypath [overridefile [pathprefix]]
           sources srcpath [overridefile [pathprefix]]
           contents path
           release path
           generate config [groups]
           clean config

apt-ftparchive Debian artxiboen indizeak sortzeko erabiltzen da. Sortzeko 
estilo asko onartzen ditu, erabat automatizatuak nahiz ordezte funtzionalak
'dpkg-scanpackages' eta 'dpkg-scansources'erako
Package izeneko fitxategiak sortzen ditu .deb fitxategien zuhaitz batetik.
Package fitxategiak pakete bakoitzaren kontrol eremu guztiak izaten ditu,
MD5 hash balioa eta fitxategi tamaina barne. Override fitxategia erabiltzen
da lehentasunaren eta sekzioaren balioak behartzeko.

Era berean, iturburu fitxategiak ere sortzen ditu .dsc fitxategien
zuhaitzetik. --source-override aukera erabil daiteke src override 
fitxategi bat zehazteko.
'packages' eta 'sources' komandoa zuhaitzaren erroan exekutatu behar dira.
BinaryPath-ek bilaketa errekurtsiboaren oinarria seinalatu behar du, eta
override fitxategiak override banderak izan behar ditu. Pathprefix 
fitxategi izenen eremuei eransten zaie (halakorik badago). Hona hemen
Debian artxiboko erabilera argibide bat:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Aukerak:
  -h    Laguntza testu hau
  --md5 Kontrolatu MD5 sortzea
  -s=?  Iturburuaren override fitxategia
  -q    Isilik
  -d=?  Hautatu aukerako katxearen datu-basea
  --no-delink Gaitu delink arazketa modua
  --contents  Kontrolatu eduki fitxategia sortzea
  -c=?  Irakurri konfigurazio fitxategi hau
  -o=?  Ezarri konfigurazio aukera arbitrario bat A:  A: Ezin da %s direktorioa irakurri
 A: Ezin da %s atzitu
 %s espero zen baina ez zegoen han realloc - Huts egin du memoria esleitzean                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   /        C           )        C  "   _                                1   #     U  ,   d  #     (                         %   6  '   \            #     "                       1     C  #   `       "     5     !             )     @     R  "   p       &                   !     #   .    R  8     #     #   >  "   b       #     (     $     !     F   *     q  +     0     2               5   6  *   l  H     /          $   #  ,   H  -   u       (     #        
  8   '  4   `  &     &     =     )   !     K     k  $     +                Z       g     k       #     *        )                              (   $             !         .      ,                              	      '         
       %       &                                  -         +          #       "                        *   
         /      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 0.5.26
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2008-12-11 14:52+0200
Last-Translator: Tapio Lehtonen <tale@debian.org>
Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>
Language: fi
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms:  nplurals=2; plural=(n != 1);
   %s:llä ei  ole binääristäkään poikkeustietuetta
   %s:llä ei ole poikkeustietuetta
   %s:llä ei ole poikkeustietuetta
   %s ylläpitäjä on %s eikä %s
  DeLink %s [%s]
  DeLinkin yläraja %st saavutettu.
 *** Linkin %s -> %s luonti ei onnistunut Arkistossa ei ollut pakettikenttää Arkistolla ei ole ohjaustietuetta Ohjelman debconf versiota ei saa selvitettyä. Onko debconf asennettu? Compress-lapsiprosessi Pakattu tulostus %s tarvitsee pakkausjoukon Tietokanta on vanha, yritetään päivittää %s Tietokanta on turmeltunut, tiedosto nimetty %s.old E:  E: Tiedostossa virheitä  Tapahtui virhe käsiteltäessä sisällysluetteloa %s Tapahtui virhe käsiteltäessa kansiota %s Tapahtui virhe kirjoitettaessa otsikkotietoa sisällysluettelotiedostoon IPC-putken luominen aliprosessiin ei onnistunut fork ei onnistunut Tiedoston %s avaaminen ei onnistunut Poikkeustiedoston %s lukeminen ei onnistunut Lukeminen ei onnistunut laskettaessa MD5:ttä readlink %s ei onnistunut Nimen muuttaminen %s -> %s ei onnistunut Osoitteen %s selvitys ei onnistunut Tiedostolle %s ei toimi stat Syöttö/tulostus aliprosessiin/tiedostoon ei onnistunut Sisäinen virhe, prosessin %s luominen ei onnistunut Mitkään valinnat eivät täsmänneet Paketin laajennuslista on liian pitkä Pakettitiedostojen ryhmästä "%s" puuttuu joitain tiedostoja Lähteiden laajennuslista on liian pitkä Puun läpikäynti ei onnistunut Kohdistinta ei saada Tiedoston %s avaaminen ei onnistunut Tietokantatiedostoa %s ei saatu avattua: %s Tuntematon pakkausalgoritmi "%s" Tuntematon pakettitietue! Käyttö: apt-ftparchive [valitsimet] komento
Komennot: packages binääripolku [poikkeustdsto [polun alku]]
          sources lähdepolku [poikkeustdsto [polun alku]]
          contents polku
          release polku
          generate asetukset [ryhmät]
          clean asetukset

apt-ftparchive tuottaa hakemistoja Debianin arkistoista. Monta tuottamistapaa
on tuettu alkaen täysin automaattisista toiminnallisesti samoihin kuin
dpkg-scanpackages ja dpkg-scansources.

apt-ftparchive tuottaa pakettitiedostoja .deb-tiedostojen puusta.
Pakettitiedostossa on kunkin paketin kaikkien ohjauskenttien
sisältö sekä MD5 tiiviste ja tiedoston koko. Poikkeus-
tiedostolla voidaan arvot Priority ja Section pakottaa halutuiksi.

Samaan tapaan apt-ftparchive tuottaa lähdetiedostoja
.dscs-tiedostojen puusta. Valitsimella --source-overrride voidaan
määrittää lähteiden poikkeustiedosto.

Komennot "packages" ja "sources" olisi suoritettava puun juuressa.
Binääripolun olisi osoitettava rekursiivisen haun alkukohtaan ja
poikkeustiedostossa olisi oltava poikkeusilmaisimet. Polun alku
yhdistetään tiedoston nimeen jos se on annettu. Esimerkki
käytöstä Debianin arkiston kanssa:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Valitsimet:
  -h    Tämä ohje
  --md5 MD5 luonti
  -s=?  Lähteiden poikkeustdosto
  -q    Ei tulostusta
  -d=?  Valinnainen välimuistitietokanta
  --no-delink delinking-virheenjäljitys päälle
  --contents  Sisällysluettelotiedoston luonti
  -c=?  Lue tämä asetustiedosto
  -o=?  Aseta mikä asetusvalitsin tahansa W:  W: Kansiota %s ei voi lukea
 W: Tdstolle %s ei toimi stat
 Odotettiin %s, mutta sitä ei ollut realloc - Muistin varaaminen ei onnistunut                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         B     .      7   /  '   g       !          ,     /     O   @       >          ;   e  6          /     "     +   1  ;   ]  6                    3     1   E     w  %               8     '   (  9   P  3     3     7        *  .   J  Q   y  0                  :  ;   Q  ,     #                      c(     @)    !*     ?+  5   E+     {+  +   +  ,   +     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2019-01-21 09:19+0100
Last-Translator: Julien Patriarca <leatherface@debian.org>
Language-Team: French <debian-l10n-french@lists.debian.org>
Language: fr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Poedit 2.0.5
Plural-Forms: nplurals=2; plural=(n > 1);
   %s ne possède pas également d'entrée « binary override »
 %s ne possède pas d'entrée « override »
   %s ne possède pas d'entrée « source override »
  le responsable de %s est %s et non %s
  Délier %s [%s]
  Seuil de delink de %so atteint.
 *** Impossible de lier %s à %s L'archive ne possède pas de champ de paquet L'archive n'a pas d'enregistrement de contrôle Impossible d'obtenir la version de debconf. Est-ce que debconf est installé ? Fils compressé La sortie compressée %s a besoin d'un ensemble de compression Le format de la base de données n'est pas valable. Si vous mettez APT à jour, veuillez supprimer puis recréer la base de données. Base de données ancienne, tentative de mise à jour de %s" Base de données corrompue, fichier renommé en %s.old E :  E : des erreurs sont survenues sur le fichier  Erreur du traitement du contenu %s Erreur lors du traitement du répertoire %s Erreur lors de l'écriture de l'en-tête du fichier contenu Impossible de créer le tube IPC sur le sous-processus Échec du fork Impossible d'ouvrir %s Impossible de lire le .dsc Impossible de lire le fichier d'« override » %s Impossible de lire lors du calcul de la somme MD5 Impossible de lire le lien %s Impossible de changer le nom %s en %s Impossible de résoudre %s Impossible de statuer %s Échec d'entrée/sortie du sous-processus sur le fichier Erreur interne, impossible de créer %s Entrée « override » %s mal formée ligne %llu n° 1 Entrée « override » %s mal formée %llu n° 2 Entrée « override » %s mal formée %llu n° 3 Entrée « override » %s mal formée ligne %llu (%s) Aucune sélection ne correspond La liste d'extension du paquet est trop longue Quelques fichiers sont manquants dans le groupe de fichiers de paquets « %s » La liste d'extension des sources est trop grande Échec du parcours de l'arbre Impossible d'obtenir un curseur Impossible d'ouvrir %s Impossible d'ouvrir le fichier de base de données %s : %s Algorithme de compression « %s » inconnu Enregistrement de paquet inconnu ! Usage : apt-dump-solver

apt-dump-solver est une interface pour stocker les scénario EDSP
dans un fichier et éventuellement le faire suivre à un autre résolveur.
 Usage : apt-extracttemplates fichier1 [fichier2 ...]

apt-extracttemplates est un outil pour extraire la configuration et les
gabarits des paquets Debian. Il est utilisé principalement par debconf(1)
pour poser des questions à propos de la configuration avant d'installer les paquets
 Usage : apt-ftparchive [options] commande
Commandes :  packages binarypath [fichier d'« override » [chemin du préfixe]]
             sources srcpath [fichier d'« override » [chemin du préfixe]]
             contents path
             release path
             generate config [groupes]
             clean config

apt-ftparchive génère des fichiers d'index pour les archives Debian. Il
prend en charge de nombreux types de génération, d'une automatisation complète
à des remplacements fonctionnels pour dpkg-scanpackages et dpkg-scansources

apt-ftparchive génère les fichiers de paquets à partir d'un arbre de .debs.
Le fichier des paquets contient les contenus de tous les champs de contrôle
de chaque paquet aussi bien que les hachages MD5 et la taille du fichier. Un
fichier d'« override » est accepté pour forcer la valeur des priorités et
des sections

De façon similaire, apt-ftparchive génère des fichiers de source à partir
d'un arbre de .dscs. L'option --source-override peut être employée pour
spécifier un fichier src d'« override »

Les commandes « packages » et « sources » devraient être démarrées à la
racine de l'arbre. « BinaryPath » devrait pointer sur la base d'une
recherche récursive et le fichier d'« override » devrait contenir les
drapeaux d'annulation. « Pathprefix » est ajouté au champ du nom de
fichier s'il est présent. Exemple d'utilisation d'archive Debian :
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options :
  -h     Ce texte d'aide
  --md5  Contrôle la génération des MD5
  -s=?   Fichier d'« override » pour les sources
  -q     Silencieux
  -d=?   Sélectionne la base de données optionnelle de cache
  --no-delink Permet le mode de débogage délié
  --contents  Contrôle la génération de fichier
  -c=? Lit ce fichier de configuration
  -o=? Place une option de configuration arbitraire Usage : apt-internal-planner

apt-internal-planner est une interface en ligne de commande
permettant d'utiliser le planificateur interne pour la famille d'APT
de manière externe à des fins de débogage ou équivalent
 Utilisation : apt-internal-solver

apt-internal-solver est une interface en ligne de commande
permettant d'utiliser la résolution interne pour la famille d'APT
de manière externe à des fins de débogage ou équivalent


 Usage : apt-sortpkgs [options] fichier1 [fichier2 ...]

apt-sortpgks est un outil simple permettant de trier les informations à
propos d'un paquet. Par défaut, il trie par information de paquets binaires,
mais l'option -s peut être utilisée pour passer au tri par paquet source.

 A :  A : Impossible de lire le contenu du répertoire %s
 A : Impossible de statuer %s
 A attendu %s, mais il n'était pas présent realloc - Échec de l'allocation de mémoire                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  0        C         (  )   )     S  "   o                                1   3     e  ,   t  m     #     (   3     \     `     y       %     '               #   #  "   G     j                      #          "     5   ;  !   q                      "        	  &  )	     P     T     t  !     #         ;     *     ;     !   -     O  )   `  $     $     (     E        C  :   X       -     D   D       #     +     .     ?     0   L  %   }       2     &     "     *   :     e  '     1     5           4   5  9   j  2                    8   5  ,   n  !              '          %      +   *      *                              )   %              "         /      -                              	      (         
       &       '                 +               .         ,          $       #                        !   
         0      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2011-05-12 15:28+0100
Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>
Language-Team: galician <proxecto@trasno.net>
Language: gl
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: KBabel 1.11.4
Plural-Forms: nplurals=2; plural=n != 1;
X-Poedit-Language: Galician
   %s tampouco ten unha entrada de «override» de binarios
   %s non ten unha entrada de «override»
   %s non ten unha entrada de «override» de código fonte
   O mantedor de %s é %s, non %s
  DesLig %s [%s]
  Acadouse o límite de desligado de %sB.
 *** Non foi posíbel ligar %s con %s O arquivo non tiña un campo Package O arquivo non ten un rexistro de control Non é posíbel obter a versión de debconf. Debconf está instalado? Fillo de compresión A saída comprimida %s precisa dun conxunto de compresión O formato da base de datos non é correcto. Se a anovou desde unha versión antiga de apt, retirea e volva a crear a base de datos A base de datos é antiga, tentando anovar %s A base de datos estaba danada, cambiouse o nome do ficheiro a %s.old E:  E: os erros aplícanse ao ficheiro  Produciuse un erro ao procesar o contido %s Produciuse un erro ao procesar o directorio %s Produciuse un erro ao gravar a cabeceira no ficheiro de contido Non foi posíbel crear a canle IPC ao subproceso Non foi posíbel facer a bifurcación Non foi posíbel abrir %s Non foi posíbel ler o ficheiro de «override» %s Non foi posíbel ler ao calcular o MD5 Non foi posíbel ler a ligazón %s Non foi posíbel cambiar o nome de %s a %s Non foi posíbel solucionar %s Non foi posíbel determinar o estado %s Produciuse un fallo na E/S do subproceso/ficheiro Produciuse un erro interno, non foi posíbel crear %s Non coincide ningunha selección A lista de extensións de paquetes é longa de máis Faltan ficheiros no grupo de ficheiros de paquetes «%s» A lista de extensións de fontes é longa de máis Fallou o percorrido da árbore Non é posíbel obter un cursor Non é posíbel puido abrir %s Non é posíbel abrir o ficheiro de base de datos %s: %s Algoritmo de compresión «%s» descoñecido Rexistro de paquete descoñecido! Emprego: apt-ftparchive [opcións] orde
Ordes: packages rutabinaria [fichoverride [prefixoruta]]
       sources rutafontes [fichoverride [prefixoruta]]
       contents ruta
       release ruta
       generate config [grupos]
       clean config

apt-ftparchive xera ficheiros de índices para arquivos de Debian. Admite
varios estilos de xeración, de totalmente automática a substitutos funcionais
de dpkg-scanpackages e dpkg-scansources

apt-ftparchive xera ficheiros Packages dunha árbore de .debs. O ficheiro
Packages ten o contido de todos os campos de control de cada paquete, así
coma a suma MD5 e o tamaño do ficheiro. Admitese un ficheiro de «overrides»
para forzar o valor dos campos Priority e Section.

De xeito semellante, apt-ftparchive xera ficheiros Sources dunha árbore de
.dscs. Pódese empregar a opción --source-override para especificar un ficheiro
de «overrides» para fontes.

As ordes «packages» e «sources» deberían executarse na raíz da árbore.
«Rutabinaria» debería apuntar á base da busca recursiva e o ficheiro
«fichoverride» debería conter os modificadores de «override». «Prefixoruta»
engádese aos campos de nomes de ficheiros se está presente. Un exemplo
de emprego do arquivo de Debian:
   apt-ftparchive packages dists/potato/main/binary-i386/ > 
               dists/potato/main/binary-i386/Packages

Opcións:
  -h    Este texto de axuda
  --md5 Controla a xeración de MD5
  -s=?  Ficheiro de «override» de fontes
  -q    Non produce ningunha saída por pantalla
  -d=?  Escolle a base de datos de caché opcional
  --no-delink Activa o modo de depuración de desligado
  --contents  Controla a xeración do ficheiro de contido
  -c=?  Le este ficheiro de configuración
  -o=?  Estabelece unha opción de configuración A:  A: non é posíbel ler o directorio %s
 A: non é posíbel atopar %s
 Agardouse por %s pero non estaba alí realloc - Non foi posíbel reservar memoria                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               8        O           )          "        B     `     q                 1          ,   $  m   Q  #     (                  )     F  %   d  '                    #     "        .     D     ^     s       #     "     "     "   	  $   /	     T	  "   j	  5   	  !   	     	     	     
     "
  "   @
     c
     {
  &  j          ;     -     1     Q  !   g  #         @   |  3     ;        -     M  #   ^  &     '     (     G        B  F   a       8   ?  .   x            %     (     ,   
  =   :     x       #     /     '     &   %  )   L     v       *     (     5     5   8  5   n  7          -     =   *  .   h       "          )     -        F    c  q       %  	  &     '  *   '     '  0   '  -   0(     +   #      
      4                            2           	                 1              /                
   $   .         )             *          !   5       8         "   '                      ,                    6       7   &                 (   -      0   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2016-04-10 19:46+0200
Last-Translator: Gabor Kelemen <kelemeng@ubuntu.com>
Language-Team: Hungarian <gnome-hu-list@gnome.org>
Language: hu
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms:  nplurals=2; plural=(n != 1);
X-Launchpad-Export-Date: 2016-04-10 19:31+0000
X-Generator: Lokalize 1.5
   %s nem rendelkezik bináris-felülbíráló bejegyzéssel sem
   %s nem rendelkezik felülbíráló bejegyzéssel
   %s nem rendelkezik forrás-felülbíráló bejegyzéssel
   %s karbantartója %s, nem %s
  DeLink %s [%s]
  a DeLink korlátja (%sB) elérve.
 *** %s linkelése sikertelen ehhez: %s Az archívumnak nem volt csomag mezője Az archívumnak nincs vezérlő rekordja Nem lehet megállapítani a debconf verziót. A debconf telepítve van? Gyermekfolyamat tömörítése %s tömörített kimenetnek egy tömörítő készletre van szüksége Az adatbázis-formátum érvénytelen. Ha az apt egy korábbi verziójáról frissített, akkor távolítsa el, és hozza létre újra az adatbázist. A DB régi, kísérlet a következő frissítésére: %s A DB megsérült, a fájl átnevezve %s.old-ra H:  H: Hibás a fájl  Hiba %s tartalmának feldolgozásakor Hiba a(z) %s könyvtár feldolgozásakor Hiba a tartalomfájl fejlécének írásakor Nem sikerült IPC-adatcsatornát létrehozni az alfolyamathoz Nem sikerült forkolni %s megnyitása sikertelen Nem sikerült olvasni a .dsc fájlt Nem lehet a(z) %s felülbírálófájlt olvasni Olvasási hiba az MD5 kiszámításakor readlink nem hajtható végre erre: %s „%s” átnevezése sikertelen erre: %s Nem sikerült feloldani ezt: %s %s elérése sikertelen IO az alfolyamathoz/fájlhoz nem sikerült Belső hiba, %s létrehozása sikertelen %s felülbírálás deformált a(z) %llu. sorában #1 %s felülbírálás deformált a(z) %llu. sorában #2 %s felülbírálás deformált a(z) %llu. sorában #3 %s felülbírálás deformált a(z) %llu. sorában (%s) Nincs illeszkedő kiválasztás A csomagkiterjesztések listája túl hosszú Néhány fájl hiányzik a(z) „%s” csomagfájlcsoportból A forráskiterjesztések listája túl hosszú Fabejárás nem sikerült Nem sikerült egy mutatóhoz jutni %s megnyitása sikertelen A(z) %s DB fájlt nem lehet megnyitni: %s „%s” tömörítési algoritmus ismeretlen Ismeretlen csomagbejegyzés! Használat: apt-extracttemplates fájl1 [fájl2 ...]

Az apt-extracttemplates konfigurációs- és sabloninformációk debian-
csomagokból való kinyerésére használható. Elsősorban a debconf(1)
használja konfigurációs kérdések feltételéhez a csomagok telepítése előtt.
 Használat: apt-ftparchive [kapcsolók] parancs
Parancsok: packages binarypath [felülbírálófájl [útvonalelőtag]]
           sources srcpath [felülbírálófájl [útvonalelőtag]]
           contents útvonal
           release útvonal
           generate konfigfájl [csoportok]
           clean konfigfájl

Az apt-ftparchive indexfájlokat generál a Debian archívumokhoz. A generálás
sok stílusát támogatja, a teljesen automatizálttól kezdve a
dpkg-scanpackages és a dpkg-scansources funkcionális helyettesítéséig.

Az apt-ftparchive Package fájlokat generál a .deb-ek fájából. A Package
fájl minden vezérlő mezőt tartalmaz minden egyes csomagról úgy az MD5
hasht mint a fájlméretet. Az override (felülbíráló) fájl támogatott a
Prioritás és Szekció mezők értékének kényszerítésére.

Hasonlóképpen az apt-ftparchive Sources fájlokat generál .dsc-k fájából.
A --source-override opció használható forrás-felülbíráló fájlok megadására

A „packages” és „sources” parancsokat a fa gyökeréből kell futtatni.
A BinaryPath-nak a rekurzív keresés kiindulópontjára kell mutatnia, és
a felülbírálófájlnak a felülbíráló jelzőket kell tartalmaznia. Az útvonalelőtag
hozzáadódik a fájlnév mezőkhöz, ha meg van adva. Felhasználására egy példa a
Debian archívumból:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Kapcsolók:
  -h    Ez a súgó szöveg
  --md5 MD5 generálás vezérlése
  -s=?  Forrás-felülbíráló fájl
  -q    Szűkszavú mód
  -d=?  Opcionális gyorsítótár-adatbázis kiválasztása
  --no-delink „delink” hibakereső mód bekapcsolása
  --contents  Tartalom fájl generálásának ellenőrzése
  -c=?  Ezt a konfigurációs fájlt olvassa be
  -o=?  Beállít egy tetszőleges konfigurációs opciót Használat: apt-internal-solver

Az apt-internal-solver felülettel az aktuális belső feloldó külső
feloldóként használható az APT családhoz hibakeresési vagy hasonló céllal
 Használat: apt-sortpkgs [kapcsolók] fájl1 [fájl2 ...]

Az apt-sortpkgs csomaginformációs fájlok rendezésére szolgál.
Alapesetben bináris csomagok információi alapján rendez, de a -s kapcsolóval
át lehet váltani forrás csomagok szerinti sorrendre.
 F:  F: nem lehet a(z) %s könyvtárat olvasni
 F: %s nem érhető el
 Nem található a(z) %s, a várakozás után sem realloc - Nem sikerült memóriát lefoglalni                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         .          %     %        6  '   G  (   o  $     $     :          =   5     s  5     B   7     z  #   ~  $     %     <     =   *     h     z       )     /     )   
  !   7     Y     x  &     ,     #     #     #   4  %   X     ~  6     4     5        >     ^     ~  .     *     !              %       &     '  8  G(     )  '   )  #   )  #   )  0   )     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2019-03-04 11:05+0100
Last-Translator: Milo Casagrande <milo@milo.name>
Language-Team: Italian <tp@lists.linux.it>
Language: it
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n!=1);
X-Generator: Poedit 2.2.1
   %s non ha neppure un campo binario override
   %s non ha un campo override
   %s non ha un campo source override
   il responsabile di %s è %s non %s
  Delink %s [%s]
  Raggiunto il limite di DeLink di %sB.
 *** Collegamento di %s a %s non riuscito L'archivio non ha un campo "package" L'archivio non ha un campo "control" Impossibile trovare la versione di debconf. È installato? Sottoprocesso compresso L'output compresso %s necessita di un insieme di compressione Il formato del database non è valido. Se è stato eseguito l'aggiornamento da una vecchia versione di apt, rimuovere e ricreare il database. Il database è vecchio, tentativo di aggiornamento %s Il database era danneggiato, il file è stato rinominato in %s.old E:  E: Gli errori si applicano al file  Errore nell'elaborare i contenuti %s Errore nell'elaborare la directory %s Errore nella scrittura dell'intestazione nel file "contents" Creazione di una pipe IPC verso il sottoprocesso non riuscita Fork non riuscita Apertura di %s non riuscita Lettura di .dsc non riuscita Lettura del file override %s non riuscita Lettura durante l'elaborazione MD5 non riuscita Esecuzione di readlink su %s non riuscita Rinomina di %s in %s non riuscita Risoluzione di %s non riuscita Impossibile eseguire stat su %s I/O al sottoprocesso/file non riuscito Errore interno, creazione di %s non riuscita Override %s riga %llu malformato #1 Override %s riga %llu malformato #2 Override %s riga %llu malformato #3 Override %s riga %llu malformato (%s) Nessuna selezione corrisponde L'elenco dell'estensione del pacchetto è troppo lungo Mancano alcuni file nel file group di pacchetti "%s" L'elenco dell'estensione del sorgente è troppo lungo Visita dell'albero non riuscita Impossibile ottenere un cursore Impossibile aprire %s Impossibile aprire il file del database %s: %s Algoritmo di compressione "%s" sconosciuto Record del pacchetto sconosciuto. Usage: apt-dump-solver

apt-dump-solver è un'interfaccia per salvare su file uno scenario EDSP e
inviarlo, opzionalmente, a un altro risolutore.
 Uso: apt-extracttemplates FILE1 [FILE2 ...]

apt-extracttemplates è uno strumento per estrarre configurazioni e template dai
pacchetti debian. Viene utilizzato principalmente da debconf(1) per chiedere
all'utente parametri di configurazione prima di installare i pacchetti.
 Uso: apt-ftparchive [OPZIONI] COMANDO
Comandi: packages PERCORSO_AL_BINARIO [FILE_OVERRIDE [PREFISSO_PERCORSO]
         sources PERCORSO_AI_SORGENTI [FILE_OVERRIDE [PREFISSO_PERCORSO]
         contents PERCORSO
         release PERCORSO
         generate CONFIGURAZIONE [GRUPPI]
         clean CONFIGURAZIONE

apt-ftparchive genera file di indice per gli archivi Debian. Supporta
molti stili di generazione da completamente automatici ad alternative
funzionali per dpkg-scanpackages e dpkg-scansources

apt-ftparchive genera file Packages da un albero di ".deb". Il file
Package contiene le informazioni di tutti i campi control da ogni
pacchetto, così come l'hash MD5 e la dimensione del file. Un file override
è supportato per forzare i valori di priorità e sezione.

Similmente, apt-ftparchive genera file Sources da un albero di .dscs.
L'opzione --source-override può essere usata per specificare un file
di override per i sorgenti

I comandi "packages" e "sources" devono essere eseguiti nella root 
dell'albero. Il percorso al binario deve puntare alla base della ricerca 
ricorsiva e il file override deve contenere le opzioni di override.
Il prefisso del percorso è aggiunto al campo filename se presente. Esempio
di utilizzo dall'archivio Debian:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages 

Opzioni:
  -h          Mostra questo aiuto
  --md5       Controlla la generazione dell'MD5
  -s=?        File override dei sorgenti
  -q          Silenzioso
  -d=?        Seleziona il database di cache opzionale
  --no-delink Abilita la modalità di debug del delinking
  --contents  Controlla la generazione del file "contents"
  -c=?        Legge come configurazione il file specificato
  -o=?        Imposta un'opzione arbitraria di configurazione Uso: apt-internal-planner

apt-internal-planner è un'interfaccia per l'utilizzo del pianificatore di
installazione interno come pianificatore esterno per eseguire il debug degli
strumenti APT.
 Uso: apt-internal-solver

apt-internal-solver è un'interfaccia per l'utilizzo del resolver interno
come resolver esterno per eseguire il debug degli strumenti APT.

 Uso: apt-sortpkgs [OPZIONI] FILE1 [FILE2 ...]

apt-sortpkgs è un semplice strumento per l'ordinamento dei file di informazione
dei pacchetti. Per impostazione predefinita ordina in base alle informazioni
sui pacchetti binari, ma tramite l'opzione -s è possibile passare
all'ordinamento sui pacchetti sorgenti.
 A:  A: Impossibile leggere la directory %s
 A: Impossibile eseguire stat su %s
 In attesa di %s ma non era presente realloc - Allocazione della memoria non riuscita                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         =     1     :     5   >  #   t  :     8     K     B   X  h          4        O  ?     M   6       6     9     C     W   E  A          '     )   "  @   L  4     0     1     !   %  3   G  ;   {  3     $     $     $   5  &   Z  0     3     ]     -   D  -   r  $     #     8     /   "   +   R      ~   \  1!  ,  "     *     +  z  ,     -  1   .  -   8.  ?   f.  7   .     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 2.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2022-08-14 14:30+0900
Last-Translator: Hideki Yamane <henrich@debian.org>
Language-Team: Japanese <debian-japanese@lists.debian.org>
Language: ja
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
   %s にバイナリ override エントリがありません
   %s に override エントリがありません
   %s にソース override エントリがありません
   %1$s メンテナは %3$s ではなく %2$s です
  リンク %s [%s] を外します
  リンクを外す制限の %sB に到達しました。
 *** %s を %s にリンクするのに失敗しました アーカイブにパッケージフィールドがありませんでした アーカイブにコントロールレコードがありません debconf のバージョンを取得できません。debconf はインストールされていますか? 圧縮子プロセス 圧縮出力 %s には圧縮セットが必要です DB フォーマットが無効です。apt の古いバージョンから更新したのであれば、データベースを削除し、再作成してください。 DB が古いため、%s のアップグレードを試みます DB が壊れていたため、ファイル名を %s.old に変更しました エラー:  エラー: エラーが適用されるファイルは  Contents %s の処理中にエラーが発生しました ディレクトリ %s の処理中にエラーが発生しました Contents ファイルへのヘッダの書き込み中にエラーが発生しました 子プロセスへの IPC パイプの作成に失敗しました fork に失敗しました %s のオープンに失敗しました .dsc の読み取りに失敗しました override ファイル %s を読み込むのに失敗しました MD5 の計算中に読み込みに失敗しました %s のリンク読み取りに失敗しました %s を %s に名前変更できませんでした %s の解決に失敗しました %s の状態を取得するのに失敗しました 子プロセス/ファイルへの IO が失敗しました 内部エラー、%s の作成に失敗しました 不正な override %s %llu 行目 #1 不正な override %s %llu 行目 #2 不正な override %s %llu 行目 #3 不正な override %s %llu 行目 (%s) 選択にマッチするものがありません パッケージ拡張子リストが長すぎます パッケージファイルグループ `%s' に見当たらないファイルがあります ソース拡張子リストが長すぎます ツリー内での移動に失敗しました カーソルを取得できません '%s' をオープンできません DB ファイル %s を開くことができません: %s '%s' は未知の圧縮アルゴリズムです 不明なパッケージレコードです! 使用方法: apt-dump-solver

apt-dump-solver は EDSP シナリオをファイルに残し、
オプションで別のソルバに転送するインターフェイスです。
 使用方法: apt-extracttemplates ファイル名1 [ファイル名2 ...]

apt-extracttemplates は debian パッケージから設定とテンプレートファイルを
抽出するためのツールです。パッケージのインストールの前に設定に関する質問を
要求する debconf(1) によって主に使用されます。
 使用方法: apt-ftparchive [オプション] コマンド
コマンド: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive は Debian アーカイブ用のインデックスファイルを生成しま
す。全自動のものから、dpkg-scanpackages と dpkg-scansources の代替機能
となるものまで、多くの生成方法をサポートしています。

apt-ftparchive は .deb のツリーから Packages ファイルを生成します。
Packages ファイルは MD5 ハッシュやファイルサイズに加えて、各パッケージ
のすべての制御フィールドの内容を含んでいます。Priority と Section の値
を強制するために override ファイルがサポートされています。

同様に apt-ftparchive は .dsc のツリーから Sources ファイルを生成しま
す。--source-override オプションを使用するとソース override ファイルを
指定できます。

'packages' および 'sources' コマンドはツリーのルートで実行する必要があ
ります。BinaryPath には再帰検索のベースディレクトリを指定し、override 
ファイルは override フラグを含んでいる必要があります。もし pathprefix 
が存在すればファイル名フィールドに付加されます。debian アーカイブでの
使用方法の例:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

オプション:
  -h このヘルプを表示する
  --md5 MD5 の生成を制御する
  -s=?  ソース override ファイル
  -q    表示を抑制する
  -d=?  オプションのキャッシュデータベースを選択する
  --no-delink delinking デバッグモードを有効にする
  --contents  contents ファイルの生成を制御する
  -c=? 指定の設定ファイルを読む
  -o=? 任意の設定オプションを設定する 使用方法: apt-internal-solver

apt-internal-planner は、デバッグなどの用途で、現在の内部プランナーを
APT ファミリの外部プランナーのように使うためのインターフェイスです。
 使用方法: apt-internal-solver

apt-internal-solver は、デバッグなどの用途で、現在の内部リゾルバを
APT ファミリの外部リゾルバのように使うためのインターフェイスです。
 使用方法: apt-sortpkgs [オプション] ファイル名1 [ファイル名2 ...]

apt-sortpkgs は、パッケージ情報ファイルをソートするシンプルなツールです。
デフォルトではバイナリパッケージ情報でソートしますが、-s オプションを使って
ソースパッケージの順序に切り替えることができます。
 警告:  警告: ディレクトリ %s が読めません
 警告: %s の状態を取得できません
 %s を待ちましたが、そこにはありませんでした realloc - メモリの割り当てに失敗しました                                                                                                                                                                                                                                                                                                       /        C           )        C  "   _                                1   #     U  ,   d  #     (                         %   6  '   \            #     "                       1     C  #   `       "     5     !             )     @     R  "   p       &                   !     #   .    R  Z     c   C  K     G        ;  B   L  V     N        5          8     W  x     }   t       H     E   ?  <     i        ,  l     ?   8  o   x  k     Z   T  a     N     O   `  t     y   %  Z     c        ^  `     4   I  H   ~  7     P     t   P  V     p       -  G   -  2   -  b   .  p   o.     )                              (   $             !         .      ,                              	      '         
       %       &                                  -         +          #       "                        *   
         /      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2006-10-10 09:48+0700
Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>
Language-Team: Khmer <support@khmeros.info>
Language: km
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
X-Generator: KBabel 1.11.2
   %s គ្មាន​ធាតុប​ដិសេធគោល​ពីរ​ដែរ
   %s គ្មាន​ធាតុធាតុបញ្ចូល​​បដិសេធឡើយ
   %s គ្មាន​ធាតុ​បដិសេធ​ប្រភព
   អ្នក​ថែទាំ %s គឺ %s មិនមែន​ %s
  DeLink %s [%s]
  DeLink កំណត់​នៃ​ការ​វាយ %sB ។
 *** បាន​បរាជ័យ​ក្នុង​ការ​ត​ %s ទៅ %s ប័ណ្ណសារ​គ្មាន​វាល​កញ្ចប់​ ប័ណ្ណសារ​គ្មាន​កំណត់​ត្រា​ត្រួត​ពិនិត្យ​ទេ​ មិន​អាច​ទទួល​យក​កំណែ​ debconf  ។ តើ​ debconf បានដំឡើង​ឬ ? បង្ហាប់កូន ​ទិន្នផល​ដែល​បាន​បង្ហាប់​​ %s ត្រូវ​ការ​កំណត់​ការបង្ហាប់​ DB ចាស់​, កំពុង​ព្យាយាម​ធ្វើ​ឲ្យ %s ប្រសើរ​ឡើង DB បាន​ខូច​, ឯកសារ​បាន​ប្តូរ​ឈ្មោះ​ទៅ​ជា​ %s.old ។ E:  E: កំហុស​អនុវត្ត​លើ​ឯកសារ​ កំហុស​ដំណើរការ​មាតិកា​ %s ​កំហុស​ដំណើរការ​ថត​ %s កំហុស​សរសេរ​បឋម​កថា​ទៅ​ឯកសារ​មាតិកា បរាជ័យ​ក្នុង​ការ​បង្កើត​បំពង់​ IPC សម្រាប់​ដំណើរ​ការ​រង​ បាន​បរាជ័យ​ក្នុងការ​ដាក់ជា​ពីរផ្នែក​ បរាជ័យ​ក្នុង​ការ​បើក %s បាន​បរាជ័យ​ក្នុង​ការ​អានឯកសារ​បដិសេធ %s បាន​បរាជ័យ​ក្នុង​ការអាន​ នៅពេល​គណនា MD5 បាន​បរាជ័យ​ក្នុង​ការ​អាន​តំណ​ %s បរាជ័យ​ក្នុង​ការ​ប្តូរ​ឈ្មោះ %s ទៅ %s បរាជ័យ​ក្នុង​ការ​ដោះស្រាយ %s បាន​បរាជ័យ​ក្នុង​ការថ្លែង  %s IO សម្រាប់​ដំណើរការ​រង​/ឯកសារ​ បាន​បរាជ័យ​ កំហុស​ខាងក្នុង​ បរាជ័យ​ក្នុង​ការ​បង្កើត​ %s គ្មាន​ការ​ជ្រើស​​ដែល​ផ្គួផ្គង​ បញ្ជី​ផ្នែក​បន្ថែម​កញ្ចប់​វែង​ពេក ឯកសារ​មួយ​ចំនួន​បាត់បងពី​ក្រុម​ឯកសារ​កញ្ចប់​ `%s' បញ្ជី​ផ្នែក​បន្ថែម​ប្រភព​វែង​ពេក មែក​ធាង បាន​បរាជ័យ មិន​អាច​យក​ទស្សន៍ទ្រនិច​ មិន​អាចបើក​ %s បានឡើយ មិន​អាច​បើក​ឯកសារ​ DB បានទេ %s: %s មិន​ស្គាល់​ក្បួន​ដោះស្រាយ​ការបង្ហាប់​ '%s' មិន​ស្គាល់​កំណត់​ត្រា​កញ្ចប់ ! ការប្រើប្រាស់ ៖ ពាក្យ​បញ្ជា​ apt-ftparchive [ជម្រើស] 
ពាក្យ​បញ្ជា​ ៖ កញ្ចប់ binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          ផ្លូវ​មាតិកា​
          ផ្លូវ​ផ្សាយ​ចេញ 
          កំណត់​រចនាស្ព័ន្ធបង្កើត​ [groups]
          ​​កំណត់​រចនាសម្ព័ន្ធសំអាត​​

apt-ftparchive បង្កើត​​ឯកសារ​លិបិក្រម​សម្រាប់​ប័ណ្ណសារ​​ដេបៀន  ។ វា​គាំទ្រ​រចនាប័ទ្ម​នៃ​ការបង្កើតដោយ​ស្វ័យប្រវត្តិ​
ដើម្បី​ធ្វើការ​ជំនួស​
 dpkg-scanpackages និង dpkg-scansources

apt-ftparchive ដែល​បង្កើត​​​​ឯកសារ​ញ្ចប់​ ពី​មែកធាង​ .debs ។ ឯកសារ​កញ្ចប់មាន​
​មាតិកា​នៃ វត្ថុបញ្ជា​​វាល​ទាំងអស់ ដែល​បាន​មក​ពី​កញ្ចប់​និមួយ​ៗដូចជា​ MD5 hash និង​ ទំហំ​ឯកសារ​ ។ ឯកសារ​បដិសេធ​​មិន​គាំទ្រ​ 
ដើម្បី​បង្ខំ​តម្លៃ​អាទិភាព​និង សម័យ​ ។

ភាព​ដូច​គ្នា​នៃ​ apt-ftparchive បង្កើត​ឯកសារ​ប្រភព​ពី​មែកធាង​ .dscs ។
ជម្រើស​បដិសេធ​ប្រភព​អាច​ត្រូវ​បាន​ប្រើ​សម្រាប់​បញ្ចាក់ឯកសារ​បដិសេធ src  

 បញ្ជា​'កញ្ចប់​' និង​ 'ប្រភព' ត្រូវ​​តែ​រត់​ជា​ root 
 ។ BinaryPath ត្រូវ​ចង្អុល​​ទៅ​កាន់​មូលដ្ឋាន​ស្វែងរក​ហៅ​ខ្លួនឯង​ ហើយ​ 
ឯកសារ​បដិសេធ​ត្រូវមាន​ទង​បដិសេធ  ។  ផ្លូវ​បរិបទ​ត្រូវ​បាន​បន្ថែម​​ទៅ​ក្នុង​វាល​ឈ្មោះ​​ឯកសារ​បើ​វា​មាន​  ។ ឧទាហរណ៍​ ការប្រើប្រាស់​ពី​ប័ណ្ណសារ​ 
ដេបៀន  ៖
   apt-ftparchive កញ្ចប់​dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

ជម្រើស​ ៖
  -h    អត្ថបទ​ជំនួយ​នេះ​
  --md5 Control MD5 ការបបង្កើត​
  -s=?  ឯកសារ​បដិសេធ​ប្រភព​
  -q    Quiet
  -d=?  ជ្រើស​ជម្រើសលាក់​ទុ​ក​ទិន្នន័យ​
  --គ្មាន​-delink អនុញ្ញាត​ delinking របៀប​បំបាត់​កំហុស​
  --មាតិកា  ពិនិត្យ​ការបង្កើត​ឯកសារ​មាតិកា
  -c=?  អាន​ឯកសារ​ការកំណត់​រចនាសម្ព័ន្ធ​នេះ​
  -o=?  កំណត់​ជម្រើស​ការ​កំណត់​រចនា​សម្ព័ន្ធ​តាម​ចិត្ត W:  W: មិន​អាច​អាន​ថត %s បាន​ឡើយ
 W ៖ មិន​អាច​ថ្លែង %s
 រង់ចាំប់​ %s ប៉ុន្តែ ​វា​មិន​នៅទីនោះ realloc - បរាជ័យ​ក្នុង​ការ​​បម្រុង​​ទុក​សតិ​                                                                                                                                                                                                                                                                                                     0        C         (  )   )     S  "   o                                1   3     e  ,   t  m     #     (   3     \     `     y       %     '               #   #  "   G     j                      #          "     5   ;  !   q                      "        	  &  )	     P     T     t  !     #         2   S  +     2     *          5   +  9   a  0     0     I        G  =   b       E   .  A   t       G     <     ?   D  D     N           )   9  2   c  7     1     A      2   B  ,   u  C     1           +   9  @   e  (     )     $          0   6  0   g               >!  3   G!  0   {!  F   !  9   !     *                              )   %              "         /      -                              	      (         
       &       '                 +               .         ,          $       #                        !   
         0      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2010-08-30 02:31+0900
Last-Translator: Changwoo Ryu <cwryu@debian.org>
Language-Team: Korean <debian-l10n-korean@lists.debian.org>
Language: ko
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
   %s에는 binary override 항목이 없습니다
   %s에는 override 항목이 없습니다
   %s에는 source override 항목이 없습니다
   %s 관리자가 %s입니다 (%s 아님)
  링크 %s [%s] 없애기
  DeLink 한계값 %s바이트에 도달했습니다.
 *** %s 파일을 %s에 링크하는데 실패했습니다 아카이브에 패키지 필드가 없습니다 아카이브에 컨트롤 기록이 없습니다 debconf 버전을 알 수 없습니다. debconf가 설치되었습니까? 압축 하위 프로세스 압축된 출력물 %s에는 압축 세트가 필요합니다 DB 형식이 잘못되었습니다. APT 예전 버전에서 업그레이드했다면, 데이터베이스를 지우고 다시 만드십시오. DB가 오래되었습니다. %s의 업그레이드를 시도합니다 DB가 망가졌습니다. 파일 이름을 %s.old로 바꿉니다 오류:  오류: 다음 파일에 적용하는데 오류가 발생했습니다:  %s 컨텐츠를 처리하는데 오류가 발생했습니다 %s 디렉터리를 처리하는데 오류가 발생했습니다 컨텐츠 파일에 헤더를 쓰는데 오류가 발생했습니다 하위 프로세스에 대한 IPC 파이프를 만드는데 실패했습니다 fork하는데 실패했습니다 %s 파일을 여는데 실패했습니다 %s override 파일을 읽는데 실패했습니다 MD5를 계산하는 동안 읽는데 실패했습니다 %s 파일에 readlink하는데 실패했습니다 %s 파일의 이름을 %s(으)로 바꾸는데 실패했습니다 %s의 경로를 알아내는데 실패했습니다 %s의 정보를 읽는데 실패했습니다 하위 프로세스/파일에 입출력하는데 실패했습니다 내부 오류, %s 만드는데 실패했습니다 맞는 패키지가 없습니다 패키지 확장 목록이 너무 깁니다 `%s' 패키지 파일 그룹에 몇몇 파일이 빠졌습니다 소스 확장 목록이 너무 깁니다 트리에서 이동이 실패했습니다 커서를 가져올 수 없습니다 %s 열 수 없습니다 DB 파일, %s 파일을 열 수 없습니다: %s '%s' 압축 알고리즘을 알 수 없습니다 알 수 없는 패키지 기록! 사용법: apt-ftparchive [옵션] 명령
명령: packages 바이너리경로 [override파일 [경로앞부분]]
      sources 소스경로 [override파일 [경로앞부분]]
      contents 경로
      release 경로
      generate 설정 [그룹]
      clean 설정

apt-ftparchive는 데비안 아카이브용 인덱스 파일을 만듭니다. 이 프로그램은
여러 종류의 인덱스 파일 만드는 작업을 지원합니다 -- 완전 자동화 작업부터
dpkg-scanpackages와 dpkg-scansources의 기능을 대체하기도 합니다.

apt-ftparchive는 .deb 파일의 트리에서부터 Package 파일을 만듭니다.
Package 파일에는 각 패키지의 모든 제어 필드는 물론 MD5 해시와 파일
크기도 들어 있습니다. override 파일을 이용해 Priority와 Section의 값을 
강제로 설정할 수 있습니다

이와 비슷하게 apt-ftparchive는 .dsc 파일의 트리에서 Sources 파일을
만듭니다. --source-override 옵션을 이용해 소스 override 파일을
지정할 수 있습니다.

'packages'와 'sources' 명령은 해당 트리의 맨 위에서 실행해야 합니다.
"바이너리경로"는 검색할 때의 기준 위치를 가리키며 "override파일"에는
override 플래그들을 담고 있습니다. "경로앞부분"은 각 파일 이름
필드의 앞에 더해 집니다. 데비안 아카이브에 있는 예를 하나 들자면:

   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

옵션:
  -h    이 도움말
  --md5 MD5 만들기 작업을 제어합니다
  -s=?  소스 override 파일
  -q    조용히
  -d=?  캐시 데이터베이스를 직접 설정합니다
  --no-delink 디버깅 모드 지우기를 사용합니다
  --contents  컨텐츠 파일을 만드는 적업을 제어합니다
  -c=?  이 설정 파일을 읽습니다
  -o=?  임의의 옵션을 설정합니다 경고:  경고: %s 디렉터리를 읽을 수 없습니다
 경고: %s의 정보를 읽을 수 없습니다
 %s 프로세스를 기다렸지만 해당 프로세스가 없습니다 realloc - 메모리를 할당하는데 실패했습니다                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    L                  1     #   .  (   R     {            %               "     5   *  !   `                          $   v        6     /     8   #     \  %   `  &     =     
          ,     4   @  /   u  
                       
                                          
         	                                            Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to open %s Failed to resolve %s Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Unable to open %s Unable to open DB file %s: %s W:  W: Unable to read directory %s
 Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2008-05-08 12:48+0200
Last-Translator: Erdal Ronahi <erdal.ronahi@gmail.com>
Language-Team: ku <ubuntu-l10n-kur@lists.ubuntu.com>
Language: ku
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: KAider 0.1
Plural-Forms: nplurals=2; plural= n != 1;
 Di arşîvê de qada pakêtê tuneye Tomara kontrola arşîvê tuneye Guhertoya debconf nehate stendin. debconf sazkirî ye? Danegir kevn e, ji bo bilindkirina %s hewl dide DB xerabe ye, navê dosyeyê weke %s.old hate guherandin E:  Dema şixulandina naveroka %s çewtî Di şixulandina pêrista %s de çewtî Dema li dosyeya naverokê joreagahî dihate nivîsîn çewtî %s venebû %s ji hev nehate veçirandin Lîsteya dirêjahiya pakêtê zêde dirêj e Di koma pelgehên pakêta '%s' de hin pelgeh kêm in Lîsteya dirêjahiya çavkaniyê zêde dirêj e %s venebû Danegira %s nehate vekirin: %s W:  W: pelrêça %s nayê xwendin
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   &      L  5   |      P     Q     m            1     ,     #   #  (   G     p     t            %     '          #   (  "   L     o                      #          "     5   @  !   v                 "          &       >
     B
     b
  #   x
    
       &               :     4   P  .     7                          -   >  &   l       '     !                  .     F  *   ]  $          )     1     !        =     U      i  )                   $          &                                        !   &             %      #         
                     
                   	                                     $              "                     %s has no override entry
   %s maintainer is %s not %s
 *** Failed to link %s to %s Archive had no package field Cannot get debconf version. Is debconf installed? Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2008-08-02 01:47-0400
Last-Translator: Gintautas Miliauskas <gintas@akl.lt>
Language-Team: Lithuanian <komp_lt@konferencijos.lt>
Language: lt
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;
X-Launchpad-Export-Date: 2008-08-02 05:04+0000
   %s neturi perrašymo įrašo
   %s prižiūrėtojas yra %s, o ne %s
 *** Nepavyko susieti %s su %s Archyvas neturėjo paketo lauko Nepavyko sužinoti debconf versijos. Ar įdiegtas debconf? Suspaustai išvesčiai %s reikia suspaudimo rinkinio Duomenų bazė yra sena, bandoma atnaujinti %s Duomenų bazė pažeista, failas pervardintas į %s.old K:  K: Klaidos failui  Klaida apdorojant turinį %s Klaida apdorojant aplanką %s Klaida įrašant antraštę į turinio failą Nepavyko subprocesui sukurti IPC gijos Nepavyko atverti %s Nepavyko nuskaityti perrašymo failo %s Skaitymo klaida skaičiuojant MD5 Nepavyko nuskaityti nuorodos %s Nepavyko pervadinti %s į %s Nepavyko išspręsti %s Nepavyko patikrinti %s Nepavyko Nusk/Įraš į subprocesą/failą Vidinė klaida, nepavyko sukurti  %s Nėra atitikmenų Paketo plėtinių sąrašas yra per ilgas Kai kurių failų nėra paketų grupėje „%s“ Šaltinio plėtinys yra per ilgas Judesys medyje nepavyko Nepavyko atverti %s Nepavyko atverti DB failo %s: %s Nežinomas suspaudimo algoritmas „%s“ Nežinomas paketo įrašas! Naudojimas: apt-ftparchive [parametrai] komanda
Komandos: dvejatainių paketų kelias [perrašomasfailas [keliopriešdėlis]]
          sources aplankas [perrašomasfailas [kelippriešdėlis]]
          contents kelias
          release kelias
          generate parametras [grupės]
          clean parametras

apt-ftparchive generuoja indeksų failus, skirtus Debian archyvams. Palaikomi keli 
generavimo stiliai, įskaitant nuo pilnai automatizuoto iki funkcinių pakeitimų
skirtų dpkg-scanpackages ir dpkg-scansources

apt-ftparchive sugeneruoja paketų failus iš .debs medžio. Paketo failas turi visus
kontrolinius kiekvieno paketo laukus, o taip pat ir MD5 hešą bei failų dydžius. Perrašomasis
failas palaikomas tam, kad būtų priverstinai nustatytos Pirmenybių bei Sekcijų reikšmės.

Panašiai apt-ftparchive sugeneruoja ir Išeities failus iš .dscs medžio.
--source-override nuostata gali būti naudojama nustatant išeities perrašomąjį failą

"Paketų" bei "Išeičių" komandos turėtų būti paleistos failų medžio šaknyje. BinaryPath turėtų
nurodyti kelią į rekursinės paieškos pagrindą bei perrašytas failas turėtų turėti perrašymo žymes.
Keliopriešdėlis tai yra prirašomas prie failo vardų laikų jei tokių yra. Vartosenos pavyzdys
naudojant Debian archyvą:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Nuostatos:
  -h Šis pagalbos tekstas
  --md5 Valdyti MD5 generavimą
  -s=? Šaltinio perrašomas failas
  -q Tylėti
  -d=? Pasirinkti papildomą kešo duomenų bazę
  --no-delink Įjungti atjungiamąjį derinimo rėžimą
  -c=? Perskaityti šį nuostatų failą
  -o=? Nustatyti savarankišką konfigūracijos nuostatą Į:  Į: Nepavyko perskaityti aplanko %s
 Į: Nepavyko patikrinti %s
 realloc - Nepavyko išskirti atminties                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            /        C           )        C  "   _                                1   #     U  ,   d  #     (                         %   6  '   \            #     "                       1     C  #   `       "     5     !             )     @     R  "   p       &                   !     #   .    R  S     _   O  i     J        d  >     E     L     n   S       L   C  {     x               P     A   f  V          z     ~     .     `     p     8     [     1     ;   H  I     b     3   1  e   e  z     k   F  /     ;     .     H   M  p     @     l
  H     +  o   +  K   5,  P   ,  O   ,     )                              (   $             !         .      ,                              	      '         
       %       &                                  -         +          #       "                        *   
         /      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2008-11-20 23:27+0530
Last-Translator: Sampada <sampadanakhare@gmail.com>
Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India <janabhaaratii@cdacmumbai.in>
Language: mr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
 %s ला द्वयंक ओव्हरराईड जागा नाही
 %s ला ओव्हरराईड/दुर्लक्षित जागा नाही
 %s ला उगम ओव्हरराईड/दुर्लक्षित जागा नाही
 %s देखभालकर्ता हा %s आणि %s नाही 
 %s [%s] डी दुवा
 %sB हीट ची डिलींक मर्यादा
 %s चा %s दुवा साधण्यास असमर्थ अर्काईव्ह ला पॅकेज जागा नाही अर्काईव्ह मध्ये नियंत्रण माहिती संच नाही debconf आवृत्ती मिळू शकत नाही,debconf अधिष्ठापित झाली काय? चॉईल्ड(प्रोसेस)ला संकलित करा %s संकलित आऊटपुट/निर्गत साठी संक्षेप संचाची गरज DB जुने आहे,%s पुढच्या आवृतीसाठी प्रयत्न करत आहे DB खराब झाली होती, संचिका %s.old म्हणून पुनर्नामांकित केली E: ई: संचिकेला लागू होणाऱ्या चुका त्रुटी प्रक्रिया मजकूर %s त्रुटी प्रक्रिया मार्गदर्शिका%s  शीर्षक संचिकेमधून मजकूर संचिकेत लिहिण्यात त्रुटी उपक्रियेचा आयपीसी वाहिनी तयार करण्यास असमर्थ नविन प्रक्रिया(प्रोसेस) निर्माण करण्यास असमर्थ %s उघडण्यास असमर्थ %s दुर्लक्षित संचिका वाचण्यास असमर्थ MD5 कामप्युटींग करतांना वाचण्यासाठी असमर्थ %s वाचणारा दुवा असमर्थ %s ला पुनर्नामांकन %s करण्यास असमर्थ  %s सोडवण्यास असमर्थ %s स्टेट करण्यास असमर्थ IO ची उपक्रिया/संचिका असमर्थ  अंतर्गत त्रुटी, %s तयार करण्यास असमर्थ निवडक भाग जुळत नाही पॅकेजेसची विस्तारित यादी खूप मोठी आहे `%s' पॅकेज संचिका समुहातील काही संचिका गहाळ आहेत उगमस्थानाची विस्तारित यादी खूप मोठी आहे ट्री चालणे असमर्थ संकेतक घेण्यास असमर्थ %s उघडण्यास असमर्थ %s: %s DB संचिका उघडण्यास असमर्थ माहित नसलेली/ले संक्षेप पद्धती/अलगोरिथम '%s' अनोळखी पॅकेज माहिती संच! वापर:  apt-ftparchive [options] command
आज्ञा: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive डेबियन फाईलसंचासाठी अनुक्रम संचिका निर्माण करतो.तो
 dpkg-scanpackages व dpkg-scansources करिता निर्मितीच्या संपूर्ण
 स्वंयंचलित ते कार्यकारी बदलावांपर्यंत अनेक शैलींना पाठबळ देतो

apt-ftparchive हा .debsच्या तरुरचनेपासून पॅकेज संचिका निर्माण करतो 
पॅकेज संचिकेमध्ये प्रत्येक पॅकेज तसेच MD5 हॅश व संचिकाआकारामधील सर्व 
 नियंत्रक क्षेत्रांची माहिती असते.अग्रक्रम आणि विभाग यांच्या मूल्यांचा प्रभाव 
वाढविण्यासाठी ओव्हरराईड संचिकेला पुष्टि दिलेली असते 

तसेच apt-ftparchive हा .dscs च्या तरूरचनेपासून उगमस्थान संचिका निर्माण करतो 
--source-override पर्यायाचा उपयोग एखाद्या src ओव्हरराईड संचिका नेमकेपणाने दाखविण्यास होतो 

 'packages' आणि  'sources' आज्ञावली तरूरचनेच्या मुळाशी दिल्या जाव्यात 
द्वयंक मार्गाचा निर्देश पुनरावर्ती शोधाच्या पाऱ्याकडे केलेला असावा आणि 
 ओव्हरराईड संचिकेमध्ये ओव्हरराईड संकेत (फ्लॅग्ज) असावेत आणि 
 संचिकानामक्षेत्रे असल्यास Pathprefix त्यांना जोडलेले असावेत.
डेबियन archiveमधील नमुन्यादाखल उपयोग : 
apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

पर्याय : 
  -h   हा साह्याकारी मजकूर 
--md5  MD5  ची निर्मिती नियंत्रित करा 
  -s=    उगमस्थान ओव्हरराईड संचिका 
 -q     शांत 
  -d=    पर्यायी दृतिकादायी डेटाबेस निवडा 
 --no-delink दुवा तोडणारा डिबग मार्ग समर्थ करा 
 ---contents  माहिती संचिकेची निर्मिती नियंत्रित करा 
  -c=?   ही संरचना संचिका वाचा 
  -o=?  एखादा अहेतुक संरचना पर्याय निर्धारित करा धो.सू.: धोक्याची सूचना:%s संचयिका वाचण्यास असमर्थ 
 धो.सू.:%s स्टेट करण्यास असमर्थ
 %s साठी थांबलो पण ते तेथे नव्हते realloc-स्मरणस्थळ शोधण्यास असमर्थ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   0        C         (  )   )     S  "   o                                1   3     e  ,   t  m     #     (   3     \     `     y       %     '               #   #  "   G     j                      #          "     5   ;  !   q                      "        	  &  )	     P     T     t  !     #         3   |  &     +     #        '  "   8  "   [     ~       ;          1     l   A  /     5               #   /     S  /   s  3                '     *   8     c  )          "     /     '        A  &   U  *   |  &     !               (   &  $   O     t           $     &   ?  &   f  &        *                              )   %              "         /      -                              	      (         
       &       '                 +               .         ,          $       #                        !   
         0      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2018-10-30 20:53+0100
Last-Translator: Petter Reinholdtsen <pere@hungry.com>
Language-Team: Norwegian Bokmål <i18n-no@lister.ping.uio.no>
Language: nb
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Lokalize 2.0
   %s har ingen binæroverstyringsoppføring heller
   %s har ingen overstyringsoppføring
   %s har ingen kildeoverstyringsoppføring
  %s-vedlikeholderen er %s, ikke %s
  DeLink %s [%s]
  DeLink-grensa på %s B er nådd.
 *** Klarte ikke å lenke %s til %s Arkivet har ikke noe pakkefelt Arkivet har ingen kontrollpost Kan ikke fastslå debconf-versjonen. Er debconf installert? Komprimer barneprosess Komprimert utdata %s trenger et komprimeringssett DB-formatet er ugyldig. Hvis du oppgraderte fra en eldre versjon av apt, fjern og så gjenopprett databasen. Databasen er gammel, forsøker å oppgradere %s Databasen er ødelagt. Filnavnet er endret til %s.old F: F: Det er feil ved fila Det oppsto en feil ved lesing av %s Feil ved lesing av katalogen %s Feil ved skriving av topptekst til innholdsfila Klarte ikke å opprette IPC-rør til underprosessen Klarte ikke å forgreine prosess Klarte ikke å åpne %s Klarte ikke å lese overstyringsfila %s Klarte ikke å lese under utregning av MD5 Klarte ikke å lese lenken %s Klarte ikke å endre navnet på %s til %s Klarte ikke å slå opp %s Klarte ikke å få statusen på %s Klarte ikke å kommunisere med underprosess/fil Intern feil, klarte ikke å opprette %s Ingen utvalg passet Lista over pakkeutvidelser er for lang Enkelte filer mangler i pakkegruppa «%s» Lista over kildeutvidelser er for lang Klarte ikke å finne fram i treet Klarte ikke å finne en peker Klarte ikke å åpne %s Klarte ikke å åpne Databasefila %s: %s Ukjent komprimeringsalgoritme «%s» Ukjent pakkeoppføring Bruk: apt-ftparchive [innstillinger] kommando
Kommandoer: packages binærsti [overstyringsfil [sti-prefiks]]
          sources kildesti [overstyringsfil [sti-prefiks]]
          contents sti
          release sti
          generate config [grupper]
          clean config

apt-ftparchive oppretter indeksfiler for debianarkiver. Mange ulike
metoder er støttet - fra helautomatiske til funksjonelle
erstatninger for dpkg-scanpackages og dpkg-scansources.

apt-ftparchive oppretter «Packages»-filer fra et tre med debianpakker.
«Packages»-fila inneholder alle kontrollfeltene fra hver pakke i tillegg til
MD5-nøkkel og filstørrelse. Du kan bruke en overstyringsfil for å tvinge
gjennom verdier for prioritet og kategori.

apt-ftparchive kan på samme måte opprette kildefiler fra et tre
med .dsc-filer. Du kan bruke en overstyringsfil med --source-override.

Kommandoene «packages» og «sources» skal kjøres i rota av katalogtreet.
«Binærsti» skal peke til toppkatalogen for det rekursive søket, og
overstyringsfila skal inneholde innstillinger for overstyring.
Sti-prefikset blir lagt til feltene for filnavn, dersom det er oppgitt. Her er
et eksempel på bruk i debianarkivet:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Innstillinger:
  -h    Vis denne hjelpeteksten.
  --md5 Styrer MD5-opprettelsen
  -s=?  Overstyringsfil for kildekode.
  -q    Stille.
  -d=?  Velger om du vil bruke en mellomlagerdatabase.
  --no-delink Bruk avlusingsmodus med «delinking».
  --contents  Styrer opprettelse av innholdsfila.
  -c=?  Les denne oppsettsfila.
  -o=? Setter en vilkårlig innstilling A: A: Klarte ikke å lese katalogen %s
 A: Klarte ikke å få statusen på %s
 Ventet på %s, men den ble ikke funnet realloc - Klarte ikke å tildele minne                                                                                                                                                                                                                                                                                                                                                 -        =                             ,     G     c       1          ,     #     (   0     Y     ]     v       %     '               #      "   D     g     }                 #          "     5   8  !   n                      "          &  &     M     Q     q  !     #         Y   e  >          B     7   R  V     U        7  "          o             t  Z   x  V     c   *  g     r     )   i       ?     D     ,   8  C   e  -     -     X     \   ^  6     S     ~   F  M     6     O   J       3     L     <   ;  
  x     (  H   (  6   (  a   )  Y   j)                                                      ,   -             &      )   *                                              "   
       '                
   %      #          (   !   	       +             $         %s has no override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2006-06-12 14:35+0545
Last-Translator: Shiva Pokharel <pokharelshiva@hotmail.com>
Language-Team: Nepali <info@mpp.org.np>
Language: ne
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2;plural=(n!=1)
X-Generator: KBabel 1.10.2
    %s संग कुनै अधिलेखन प्रविष्टि छैन
   %s संभारकर्ता %s हो %s होइन
  DeLink %s [%s]
 यस %sB हिटको डि लिङ्क सिमा।
 *** %s मा %s लिङ्क असफल भयो संग्रह संग कुनै प्याकेज फाँट छैन संग्रह संग नियन्त्रण रेकर्ड छैन  debconf संस्करण प्राप्त गर्न सकिएन । के debconf स्थापना भयो ?  सङ्कुचन शाखा सङ्कुचन गरिएको निर्गात %s लाई सङ्कुचन सेटको आवश्यक्ता पर्दछ DB पुरानो छ, %s स्तरवृद्धि गर्न प्रयास गरिदैछ DB दूषित थियो, फाइल %s.पुरानो मा पुन:नामकरण गर्नुहोस् E:  E: फाइलमा त्रुटिहरू लागू गर्नुहोस् सामग्री %sप्रक्रिया गर्दा त्रुटि डाइरेक्ट्री %s प्रक्रिया गर्दा त्रुटि सामाग्री फाइलहरुमा हेडर लेख्दा त्रुटि सहायक प्रक्रियामा IPC पाइप सिर्जना गर्न असफल काँटा गर्न असफल %s खोल्न असफल अधिलेखन फाइल पढ्न असफल %s MD5 गणना गर्दा पढ्न असफल भयो लिङ्क पढ्न असफल %s  %s मा  %s  पुन:नामकरण असफल भयो %s हल गर्न असफल भयो  %s स्थिर गर्न असफल सहायक प्रक्रिया/फाइलमा IO असफल भयो आन्तरीक त्रुटि, %s सिर्जना गर्न असफल कुनै चयनहरू मेल खाएन प्याकेज विस्तार सूचि अति लामो छ केही फाइलहरू प्याकेज फाइल समूह `%s' मा हराइरहेको छ स्रोत विस्तार सूचि अति लामो छ ट्री हिडाईँ असफल भयो कर्सर प्राप्त गर्न असक्षम भयो %s खोल्न असफल DB फाइल %s असक्षम भयो: %s अज्ञात सङ्कुचन अल्गोरिद्म '%s' अज्ञात प्याकेज रेकर्ड! उपयोग: apt-ftparchive [विकल्पहरू] आदेश
आदेशहरू: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive ले डेवियन संग्रहहरुको लागि अनुक्रमणिका फाइलहरू सिर्जना गर्दछ । यसले समर्थन गर्दछ
dpkg-scanpackages र dpkg-scansources को लागि कार्यात्मक प्रतिस्थापनमा पुरै स्वचालितबाट सिर्जनाको धेरै शैलीहरू
 

apt-ftparchive ले debs को ट्रीबाट प्याकेज फाइलहरू सिर्जना गर्दछ । प्याकेज
फाइलहरुले प्रत्येक प्याकेजबाट सबै नियन्त्रण फाँटहरुको सामग्रीहरू साथ साथै MD5 hash र filesize समावेश गर्दछ ।
एउटा अधिलेखन फाइल
प्राथमिकता र सेक्सनको मान जोड गर्न समर्थित हुन्छ ।

त्यस्तै गरी apt-ftparchive ले .dscs को ट्रीबाट स्रोत फाइलहरू सिर्जना गर्दछ ।
स्रोत--अधिलेखन--विकल्प src अधीलेखन फाइल निर्दिष्ट गर्न प्रयोग गर्न सकिन्छ

'packages' and 'sources' आदेश ट्रीको मूलमा चलाउन सकिन्छ ।
 विनारी मार्ग फेरी हुने खोजीको विन्दुमा आधारित हुन्छ र 
अधिलेखन फाइलले अधिलेखन झण्डाहरू समाविष्ट गर्दछ । यदि उपस्थित छ भने बाटो उपसर्ग
फाइलनाम फाँटहरुमा थपिन्छ । उदाहरणको लागि 
डेवियन संग्रहबाट उपयोग:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

विकल्पहरू:
  -h    यो मद्दत पाठ
  --md5 नियन्त्रण MD5 सिर्जना
  -s=?  स्रोत अधिलेखन फाइल
  -q    बन्द गर्नुहोस्
  -d=?  वैकल्पिक क्यासिङ डेटाबेस चयन गर्नुहोस्
  --no-delink delinking डिबग मोड सक्षम गर्नुहोस्
  --सामग्रीहरू  सामग्री फाइल सिर्जना नियन्त्रण गर्नुहोस्
  -c=?  यो कनफिगरेसन फाइल पढ्नुहोस्
  -o=?  एउटा स्वेच्छाचारी कनफिगरेसन विकल्प सेट गर्नुहोस् W:  W: डाइरेक्ट्री %s पढ्न असक्षम
 W: %s स्थिर गर्न असक्षम
  %s को लागि पर्खिरहेको तर यो त्यहाँ छैन realloc - स्मृति बाँडफाँड गर्न असफल भयो                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 :        O           )        #  "   ?     b                           1        5  ,   D  m   q  #     (        ,     0     I     f  %     '                    #     "   +     N     d     ~            #     "     "   		  "   ,	  $   O	     t	  "   	  5   	  !   	     
     
     0
     B
  "   `
     
     
     &  &       <                           !     #         ?     $     7   9     q             %     !     #   
  ?   .     n  A   ~       5   M  .          0     +     !     ?   5  /   u  +               ,     1   1     c  #          (     $     (     ;   9  ;   u  ;     =     "   +     N  C   n       "               %   !  "   G     j       $  "    G      '     (  +  2)     ^*     b*  &   |*  '   *  '   *     +   #      
      6                            4           	                 2              /                
   $   .         )             *          !   7       :         "   '                  0   ,                    8       9   &          5      (   -      1   3   %                %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read .dsc Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 Malformed override %s line %llu (%s) No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-dump-solver

apt-dump-solver is an interface to store an EDSP scenario in
a file and optionally forwards it to another solver.
 Usage: apt-extracttemplates file1 [file2 ...]

apt-extracttemplates is used to extract config and template files
from debian packages. It is used mainly by debconf(1) to prompt for
configuration questions before installation of packages.
 Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option Usage: apt-internal-planner

apt-internal-planner is an interface to use the current internal
installation planner for the APT family like an external one,
for debugging or the like.
 Usage: apt-internal-solver

apt-internal-solver is an interface to use the current internal
resolver for the APT family like an external one, for debugging or
the like.
 Usage: apt-sortpkgs [options] file1 [file2 ...]

apt-sortpkgs is a simple tool to sort package information files.
By default it sorts by binary package information, but the -s option
can be used to switch to source package ordering instead.
 W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 2.4.4
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2022-04-08 20:34+0200
Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>
Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>
Language: nl
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 2.2.1
   %s heeft ook geen voorrangsvermelding voor binaire pakketten
   %s heeft geen voorrangsvermelding
   %s heeft geen voorrangsvermelding voor bronpakketten
   %s beheerder is %s, niet %s
  DeLink %s [%s]
  DeLink-limiet van %sB bereikt.
 *** Koppelen van %s aan %s is mislukt Archief heeft geen 'package'-veld Archief heeft geen 'control'-record Kan versie van debconf niet bepalen. Is debconf geïnstalleerd? Comprimeer kind Gecomprimeerde uitvoer %s vereist dat een compressie ingesteld is DB-formaat is ongeldig. Als u opgewaardeerd heeft van een oudere versie van apt, dient u de database te verwijderen en opnieuw aan te maken. DB is verouderd, opwaardering van %s wordt geprobeerd DB is beschadigd, bestand hernoemd naar %s.old F:  F: Er zijn fouten van toepassing op het bestand  Fout bij het verwerken van de inhoud van %s Fout bij het verwerken van map %s Fout bij het wegschrijven van de header naar het inhoudsbestand Aanmaken van IPC-pijp naar subproces is mislukt Een nieuw proces beginnen (fork) is mislukt Openen van %s is mislukt Lezen van .dsc is mislukt Lezen van het voorrangsbestand %s is mislukt Lezen tijdens het berekenen van de MD5 is mislukt Opdracht readlink %s is mislukt Hernoemen van %s naar %s is mislukt Oplossen van %s is mislukt Opvragen van de status van %s is mislukt IO naar subproces/bestand is mislukt Interne fout, aanmaken van %s is mislukt Niet juist gevormde voorrangsvermelding %s op regel %llu #1 Niet juist gevormde voorrangsvermelding %s op regel %llu #2 Niet juist gevormde voorrangsvermelding %s op regel %llu #3 Niet juist gevormde voorrangsvermelding %s op regel %llu (%s) Geen van de selecties kwam overeen Pakket-extensielijst is te lang Sommige bestanden zijn niet aanwezig in de pakketbestandsgroep '%s' Bron-extensielijst is te lang Doorlopen boomstructuur is mislukt Kan geen cursor verkrijgen Kan %s niet openen Kan het DB-bestand %s niet openen: %s Onbekend compressie-algoritme '%s' Onbekend pakketrecord! Gebruik: apt-dump-solver

apt-dump-solver is een interface die een EDSP-scenario opslaat in
een bestand en dat facultatief doorstuurt naar een andere oplosser.
 Gebruik: apt-extracttemplates bestand1 [bestand2 ...]

apt-extracttemplates wordt gebruikt om configuratie- en sjabloonbestanden uit
Debian pakketten te halen. Het wordt hoofdzakelijk gebruikt door debconf(1) voor
het stellen van configuratievragen vooraleer pakketten geïnstalleerd worden.
 Gebruik: apt-ftparchive [opties] opdracht
Opdrachten: packages <pad naar .deb's> [voorrangsbestand [padprefix]]
            sources <pad naar .dsc's> [voorrangsbestand [padprefix]]
            contents <pad>
            release <pad>
            generate config [groepen]
            clean config

Met apt-ftparchive genereert index bestanden voor Debian archieven.
Het ondersteunt verschillende aanmaakstijlen variërend van volledig 
automatisch tot een functionele vervanging van dpkg-scanpackages en 
dpkg-scansources

apt-ftparchive genereert pakketbestanden van een boom met .debs.
Het bestand Package bevat de inhoud van alle 'control'-velden van elk
pakket alsook de MD5-hash en de bestandsgrootte. Via een voorrangsbestand
kunnen de waardes van de 'Priority'- en 'Section'-velden afgedwongen
worden.

Op overeenkomstige wijze genereert apt-ftparchive de 'Sources'-bestanden
van een boom met .dscs. De '--source-override'-optie kan gebruikt worden
om een voorrangsbestand voor bronpakketten te specificeren.

De 'packages' en 'sources' opdrachten dienen uitgevoerd te worden 
in de basismap van de boom. Het pad naar de .deb's dient te verwijzen
naar het startpunt van de recursieve zoekopdracht en een voorrangsbestand
dient de voorrangsvlaggen te bevatten. Padprefix wordt toegevoegd
aan het 'filename'-veld indien dit aanwezig is. Een praktijkvoorbeeld
uit het Debian-archief:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Opties:
  -h          Deze hulptekst
  --md5       Het aanmaken van de MD5 beheren
  -s=?        Bronvoorrangsbestand
  -q          Stille uitvoer
  -d=?        De optionele caching database selecteren
  --no-delink De debug-modus voor delinking inschakelen
  --contents  Het aanmaken van het inhoudsbestand beheren
  -c=?        Dit configuratiebestand inlezen
  -o=?        Een willekeurige configuratieoptie instellen Gebruik: apt-internal-planner

apt--internal-planner is een interface om de actuele
interne planner voor de APT-familie te gebruiken
als een externe met het oog op debuggen e.d.
 Gebruik: apt-internal-solver

apt--internal-solver is een interface om de actuele
interne oplosser voor de APT-familie te gebruiken
als een externe met het oog op debuggen e.d.
 Gebruik: apt-sortpkgs [opties] bestand1 [bestand2 ...]

apt-sortpkgs is eenvoudig gereedschap voor het sorteren van bestanden
met pakketinformatie. Standaard sorteert het informatie volgens
binair pakket, maar met de optie -s kan overgeschakeld worden
naar een ordening op basis van het bronpakket.
 W:  W: Kon map %s niet lezen
 W: Kon de status van %s niet opvragen
 Er is gewacht op %s, maar die kwam niet realloc - Geheugentoewijzing is mislukt                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ,      |  ;                                  /     K     h  1          ,     #     (        A     E     ^     {  %     '               #     "   ,     O     e                 #          "     5      !   V     x                 "                       2  !   H  #   j      $   @
  %   e
     
     
  !   
      
     
  4        S  0   b  +     4                       '  /   G  1   w            %     (         
  &   <
     c
     {
  -   
  %   
     
  &   
  )   &  '   P     x                                  "     !   8      Z  $   {               "              !   #      *                           )   
            $                  ,   
                          +                       (      %              &             	         '      %s has no override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 1.0.5
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2005-02-14 23:30+0100
Last-Translator: Havard Korsvoll <korsvoll@skulelinux.no>
Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>
Language: nn
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n != 1;
X-Generator: KBabel 1.9.1
   %s har inga overstyringsoppfring
   %s-vedlikehaldaren er %s, ikkje %s
  DeLink %s [%s]
  DeLink-grensa p %sB er ndd.
 *** Klarte ikkje lenkja %s til %s Arkivet har ikkje noko pakkefelt Arkivet har ingen kontrollpost Finn ikkje debconf-versjonen. Er debconf installert? Komprimer barn Komprimert utdata %s treng eit komprimeringssett DB er for gammal, forskjer  oppgradere %s Databasen er ydelagd. Filnamnet er endra til %s.old F:  F: Det er feil ved fila  Feil ved lesing av %s Feil ved lesing av katalogen %s Feil ved skriving av topptekst til innhaldsfila Klarte ikkje oppretta IPC-ryr til underprosessen Klarte ikkje gafla Klarte ikkje opna %s Klarte ikkje lesa overstyringsfila %s Klarte ikkje lesa under utrekning av MD5 Klarte ikkje lesa lenkja %s Klarte ikkje endra namnet p %s til %s Klarte ikkje sl opp %s Klarte ikkje f status til %s Klarte ikkje kommunisera med underprosess/fil Intern feil, klarte ikkje oppretta %s Ingen utval passa Lista over pakkeutvidingar er for lang Enkelte filer manglar i pakkefilgruppa %s Lista over kjeldeutvidingar er for lang Treklatring mislukkast Klarte ikkje f peikar Klarte ikkje opna %s Klarte ikkje opna DB-fila %s: %s Ukjend komprimeringsalgoritme %s Ukjend pakkeoppslag :  : Klarte ikkje lesa katalogen %s
 : Klarte ikkje f status til %s
 Venta p %s, men den fanst ikkje realloc - Klarte ikkje tildela minne                                                                                                     3        G   L      h  )   i       "                            8     U  1   s       ,     m     #   O  (   s                      %     '        B     Q  #   c  "                              #     "   B  "   e  "          "     5     !   	     <	     P	     g	     y	  "   	     	  &  	                 !   3  #   U    y  <   c  (     2     !          -   5  '   c  $     (     G        !  7   >  z   v  4     :   &     a  "   e  +           7     2   
  +   @     l  )     6     (     '     (   ;  ,   d  *     0     2     2      2   S       ,     7     ,     (   5     ^     ~  +                          )    !  +   *!  )   V!  .   !     (   -                 $   &   +   '   3   0         /                 2   %                                
                                 
          .         )                 1                  	                ,                    !   "   #   *      %s has no binary override entry either
   %s has no override entry
   %s has no source override entry
   %s maintainer is %s not %s
  DeLink %s [%s]
  DeLink limit of %sB hit.
 *** Failed to link %s to %s Archive had no package field Archive has no control record Cannot get debconf version. Is debconf installed? Compress child Compressed output %s needs a compression set DB format is invalid. If you upgraded from an older version of apt, please remove and re-create the database. DB is old, attempting to upgrade %s DB was corrupted, file renamed to %s.old E:  E: Errors apply to file  Error processing contents %s Error processing directory %s Error writing header to contents file Failed to create IPC pipe to subprocess Failed to fork Failed to open %s Failed to read the override file %s Failed to read while computing MD5 Failed to readlink %s Failed to rename %s to %s Failed to resolve %s Failed to stat %s IO to subprocess/file failed Internal error, failed to create %s Malformed override %s line %llu #1 Malformed override %s line %llu #2 Malformed override %s line %llu #3 No selections matched Package extension list is too long Some files are missing in the package file group `%s' Source extension list is too long Tree walking failed Unable to get a cursor Unable to open %s Unable to open DB file %s: %s Unknown compression algorithm '%s' Unknown package record! Usage: apt-ftparchive [options] command
Commands: packages binarypath [overridefile [pathprefix]]
          sources srcpath [overridefile [pathprefix]]
          contents path
          release path
          generate config [groups]
          clean config

apt-ftparchive generates index files for Debian archives. It supports
many styles of generation from fully automated to functional replacements
for dpkg-scanpackages and dpkg-scansources

apt-ftparchive generates Package files from a tree of .debs. The
Package file contains the contents of all the control fields from
each package as well as the MD5 hash and filesize. An override file
is supported to force the value of Priority and Section.

Similarly apt-ftparchive generates Sources files from a tree of .dscs.
The --source-override option can be used to specify a src override file

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Options:
  -h    This help text
  --md5 Control MD5 generation
  -s=?  Source override file
  -q    Quiet
  -d=?  Select the optional caching database
  --no-delink Enable delinking debug mode
  --contents  Control contents file generation
  -c=?  Read this configuration file
  -o=?  Set an arbitrary configuration option W:  W: Unable to read directory %s
 W: Unable to stat %s
 Waited for %s but it wasn't there realloc - Failed to allocate memory Project-Id-Version: apt 0.9.7.3
Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>
PO-Revision-Date: 2012-07-28 21:53+0200
Last-Translator: Michał Kułach <michal.kulach@gmail.com>
Language-Team: Polish <debian-l10n-polish@lists.debian.org>
Language: pl
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Lokalize 1.2
Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
   %s nie posiada również wpisu w pliku override binariów
   %s nie posiada wpisu w pliku override
   %s nie posiada wpisu w pliku override źródeł
   opiekunem %s jest %s, a nie %s
  Odłączenie %s [%s]
  Osiągnięto ograniczenie odłączania %sB.
 *** Nie udało się dowiązać %s do %s Archiwum nie posiadało pola pakietu Archiwum nie posiada rekordu kontrolnego Nie udało się pobrać wersji debconf. Czy debconf jest zainstalowany? Potomny proces kompresujący Skompresowany plik wynikowy %s wymaga podania kompresji Niepoprawny format bazy. Jeśli zaktualizowano ze starszej wersji apt, proszę usunąć i utworzyć ponownie bazę danych. Baza jest przestarzała, próbuję zaktualizować %s Baza była uszkodzona, plik został przeniesiony do %s.old E:  E: Błędy odnoszą się do pliku  Błąd podczas przetwarzania zawartości %s Błąd przetwarzania katalogu %s Błąd przy zapisywaniu nagłówka do pliku zawartości Nie udało się utworzyć potoku IPC do podprocesu Nie udało się utworzyć procesu potomnego Nie udało się otworzyć %s Nie udało się czytać pliku override %s Nie udało się czytanie w czasie liczenia skrótu MD5 Nie udało się odczytać dowiązania %s Nie udało się zmienić nazwy %s na %s Nie udało się przetłumaczyć nazwy %s Nie udało się wykonać operacji stat na %s Zawiodła operacja IO na pliku/podprocesie Błąd wewnętrzny, nie udało się utworzyć %s Nieprawidłowa linia %2$llu #1 pliku override %1$s Nieprawidłowa linia %2$llu #2 pliku override %1$s Nieprawidłowa linia %2$llu #3 pliku override %1$s Nie dopasowano żadnej nazwy Lista rozszerzeń pakietów jest zbyt długa Brakuje pewnych plików w grupie plików pakietów "%s" Lista rozszerzeń źródeł jest zbyt długa Przejście po drzewie nie powiodło się Nie udało się pobrać kursora Nie można otworzyć %s Nie udało się otworzyć pliku bazy %s: %s Nieznany algorytm kompresji "%s" Nieznane informacje o pakiecie! Użycie: apt-ftparchive [opcje] polecenie
Polecenia: packages ścieżka_do_binariów [plik_override [przedrostek]]
           sources ścieżka_do_źródeł [plik_override [przedrostek]]
           contents ścieżka
           release ścieżka
           generate konfiguracja [grupy]
           clean konfiguracja

apt-ftparchive generuje pliki indeksów dla archiwów Debiana. Obsługuje
różne rodzaje generowania, od w pełni zautomatyzowanych po funkcjonalne
zamienniki programów dpkg-scanpackages i dpkg-scansources.

apt-ftparchive generuje pliki Package na postawie drzewa plików .deb.
Wygenerowany plik zawiera pola kontrolne wszystkich pakietów oraz ich
skróty MD5 i rozmiary. Obsługiwany jest plik override, pozwalający wymusić
priorytet i dział pakietu.

apt-ftparchive podobnie generuje pliki Sources na podstawie drzewa plików
.dsc. Przy pomocy opcji --source-override można podać plik override dla
źródeł.

Polecenia "packages" i "sources" powinny być wykonywane w katalogu głównym
drzewa. "ścieżka_do_binariów" powinna wskazywać na katalog, od którego zacznie
się wyszukiwanie, a plik override powinien zawierać odpowiednie flagi.
Przedrostek (o ile został podany) jest dodawany przed ścieżką do każdego
pliku. Przykładowe użycie, z archiwum Debiana:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Opcje:
  -h    Ten tekst pomocy
  --md5 Generuje sumy kontrolne MD5
  -s=?  Plik override dla źródeł
  -q    "Ciche" działanie
  -d=?  Opcjonalna podręczna baza danych
  --no-delink Włącza tryb diagnostyczny odłączania
  --contents  Generuje plik zawartości (Contents)
  -c=?  Czyta wskazany plik konfiguracyjny
  -o=?  Ustawia dowolną opcję konfiguracji W:  W: Nie udało się odczytać katalogu %s
 W: Nie można wykonać operacji stat na %s
 Oczekiwano na proces %s, ale nie było go realloc - Nie udało się zaalokować pamięci                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  