auto
     �¿a–Ým_J*j"Tâ�jà]¸ÓÊbÑ¿Ã      File not found.
  #   ˆl–Ým_Jµ!®Å8 ¸Èn 
bÑ¿Æ„�‰ï¿Ä ?÷     # tc(8) completion                                         -*- shell-script -*-
# Copyright 2016 6WIND S.A.
# Copyright 2016 Quentin Monnet <quentin.monnet@6wind.com>

QDISC_KIND=' choke codel bfifo pfifo pfifo_head_drop fq fq_codel gred hhf \
            mqprio multiq netem pfifo_fast pie fq_pie red sfb sfq tbf \
            drr hfsc htb prio qfq dualpi2'
FILTER_KIND=' basic bpf cgroup flow flower fw route u32 matchall '
ACTION_KIND=' gact mirred bpf sample '

# Takes a list of words in argument; each one of them is added to COMPREPLY if
# it is not already present on the command line. Returns no value.
_tc_once_attr()
{
    local w subcword found
    for w in $*; do
        found=0
        for (( subcword=3; subcword < ${#words[@]}-1; subcword++ )); do
            if [[ $w == ${words[subcword]} ]]; then
                found=1
                break
            fi
        done
        [[ $found -eq 0 ]] && \
            COMPREPLY+=( $( compgen -W "$w" -- "$cur" ) )
    done
}

# Takes a list of words in argument; each one of them is added to COMPREPLY if
# it is not already present on the command line from the provided index. Returns
# no value.
_tc_once_attr_from()
{
    local w subcword found from=$1
    shift
    for w in $*; do
        found=0
        for (( subcword=$from; subcword < ${#words[@]}-1; subcword++ )); do
            if [[ $w == ${words[subcword]} ]]; then
                found=1
                break
            fi
        done
        [[ $found -eq 0 ]] && \
            COMPREPLY+=( $( compgen -W "$w" -- "$cur" ) )
    done
}

# Takes a list of words in argument; adds them all to COMPREPLY if none of them
# is already present on the command line. Returns no value.
_tc_one_of_list()
{
    local w subcword
    for w in $*; do
        for (( subcword=3; subcword < ${#words[@]}-1; subcword++ )); do
            [[ $w == ${words[subcword]} ]] && return 1
        done
    done
    COMPREPLY+=( $( compgen -W "$*" -- "$cur" ) )
}

# Takes a list of words in argument; adds them all to COMPREPLY if none of them
# is already present on the command line from the provided index. Returns no
# value.
_tc_one_of_list_from()
{
    local w subcword from=$1
    shift
    for w in $*; do
        for (( subcword=$from; subcword < ${#words[@]}-1; subcword++ )); do
            [[ $w == ${words[subcword]} ]] && return 1
        done
    done
    COMPREPLY+=( $( compgen -W "$*" -- "$cur" ) )
}

# Returns "$cur ${cur}arg1 ${cur}arg2 ..."
_tc_expand_units()
{
    [[ $cur =~ ^[0-9]+ ]] || return 1
    local value=${cur%%[^0-9]*}
    [[ $cur == $value ]] && echo $cur
    echo ${@/#/$value}
}

# Complete based on given word, usually $prev (or possibly the word before),
# for when an argument or an option name has but a few possible arguments (so
# tc does not take particular commands into account here).
# Returns 0 is completion should stop after running this function, 1 otherwise.
_tc_direct_complete()
{
    case $1 in
        # Command options
        dev)
            _available_interfaces
            return 0
            ;;
        classid)
            return 0
            ;;
        estimator)
            local list=$( _tc_expand_units 'secs' 'msecs' 'usecs' )
            COMPREPLY+=( $( compgen -W "$list" -- "$cur" ) )
            return 0
            ;;
        handle)
            return 0
            ;;
        parent|flowid)
            local i iface ids cmd
            for (( i=3; i < ${#words[@]}-2; i++ )); do
                [[ ${words[i]} == dev ]] && iface=${words[i+1]}
                break
            done
            for cmd in qdisc class; do
                if [[ -n $iface ]]; then
                    ids+=$( tc $cmd show dev $iface 2>/dev/null | \
                        cut -d\  -f 3 )" "
                else
                    ids+=$( tc $cmd show 2>/dev/null | cut -d\  -f 3 )
                fi
            done
            [[ $ids != " " ]] && \
                COMPREPLY+=( $( compgen -W "$id