From ddb71e2aedf081c3d261a992c30b345f3e38baf5 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Mon, 19 Apr 2021 10:25:08 -0400 Subject: [PATCH] [commands] Initial support for FlagConverter The name is currently pending and there's no command.signature hook for it yet since this requires bikeshedding. --- discord/ext/commands/__init__.py | 1 + discord/ext/commands/errors.py | 77 +++++ discord/ext/commands/flags.py | 530 +++++++++++++++++++++++++++++++ docs/ext/commands/api.rst | 27 ++ docs/ext/commands/commands.rst | 151 +++++++++ docs/images/commands/flags1.png | Bin 0 -> 26037 bytes docs/images/commands/flags2.png | Bin 0 -> 28823 bytes docs/images/commands/flags3.png | Bin 0 -> 27449 bytes 8 files changed, 786 insertions(+) create mode 100644 discord/ext/commands/flags.py create mode 100644 docs/images/commands/flags1.png create mode 100644 docs/images/commands/flags2.png create mode 100644 docs/images/commands/flags3.png diff --git a/discord/ext/commands/__init__.py b/discord/ext/commands/__init__.py index cb866e9fc..3da57d80b 100644 --- a/discord/ext/commands/__init__.py +++ b/discord/ext/commands/__init__.py @@ -16,3 +16,4 @@ from .help import * from .converter import * from .cooldowns import * from .cog import * +from .flags import * diff --git a/discord/ext/commands/errors.py b/discord/ext/commands/errors.py index bfbe55fc7..7f6948ce0 100644 --- a/discord/ext/commands/errors.py +++ b/discord/ext/commands/errors.py @@ -75,6 +75,10 @@ __all__ = ( 'ExtensionFailed', 'ExtensionNotFound', 'CommandRegistrationError', + 'BadFlagArgument', + 'MissingFlagArgument', + 'TooManyFlags', + 'MissingRequiredFlag', ) class CommandError(DiscordException): @@ -855,3 +859,76 @@ class CommandRegistrationError(ClientException): self.alias_conflict = alias_conflict type_ = 'alias' if alias_conflict else 'command' super().__init__(f'The {type_} {name} is already an existing command or alias.') + +class FlagError(BadArgument): + """The base exception type for all flag parsing related errors. + + This inherits from :exc:`BadArgument`. + + .. versionadded:: 2.0 + """ + pass + +class TooManyFlags(FlagError): + """An exception raised when a flag has received too many values. + + This inherits from :exc:`FlagError`. + + .. versionadded:: 2.0 + + Attributes + ------------ + flag: :class:`~discord.ext.commands.Flag` + The flag that received too many values. + values: List[:class:`str`] + The values that were passed. + """ + def __init__(self, flag, values): + self.flag = flag + self.values = values + super().__init__(f'Too many flag values, expected {flag.max_args} but received {len(values)}.') + +class BadFlagArgument(FlagError): + """An exception raised when a flag failed to convert a value. + + """ + def __init__(self, flag): + self.flag = flag + try: + name = flag.annotation.__name__ + except AttributeError: + name = flag.annotation.__class__.__name__ + + super().__init__(f'Could not convert to {name!r} for flag {flag.name!r}') + +class MissingRequiredFlag(FlagError): + """An exception raised when a required flag was not given. + + This inherits from :exc:`FlagError` + + .. versionadded:: 2.0 + + Attributes + ----------- + flag: :class:`~discord.ext.commands.Flag` + The required flag that was not found. + """ + def __init__(self, flag): + self.flag = flag + super().__init__(f'Flag {flag.name!r} is required and missing') + +class MissingFlagArgument(FlagError): + """An exception raised when a flag did not get a value. + + This inherits from :exc:`FlagError` + + .. versionadded:: 2.0 + + Attributes + ----------- + flag: :class:`~discord.ext.commands.Flag` + The flag that did not get a value. + """ + def __init__(self, flag): + self.flag = flag + super().__init__(f'Flag {flag.name!r} does not have an argument') diff --git a/discord/ext/commands/flags.py b/discord/ext/commands/flags.py new file mode 100644 index 000000000..dc6327213 --- /dev/null +++ b/discord/ext/commands/flags.py @@ -0,0 +1,530 @@ +""" +The MIT License (MIT) + +Copyright (c) 2015-present Rapptz + +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. +""" + +from __future__ import annotations + +from .errors import ( + BadFlagArgument, + CommandError, + MissingFlagArgument, + TooManyFlags, + MissingRequiredFlag, +) + +from .core import resolve_annotation +from .view import StringView +from .converter import run_converters + +from discord.utils import maybe_coroutine +from dataclasses import dataclass +from typing import ( + Dict, + Optional, + Pattern, + Set, + TYPE_CHECKING, + Tuple, + List, + Any, + Type, + TypeVar, + Union, +) + +import inspect +import sys +import re + +__all__ = ( + 'Flag', + 'flag', + 'FlagConverter', +) + + +if TYPE_CHECKING: + from .context import Context + + +class _MissingSentinel: + def __repr__(self): + return 'MISSING' + + +MISSING: Any = _MissingSentinel() + + +@dataclass +class Flag: + """Represents a flag parameter for :class:`FlagConverter`. + + The :func:`~discord.ext.commands.flag` function helps + create these flag objects, but it is not necessary to + do so. These cannot be constructed manually. + + Attributes + ------------ + name: :class:`str` + The name of the flag. + attribute: :class:`str` + The attribute in the class that corresponds to this flag. + default: Any + The default value of the flag, if available. + annotation: Any + The underlying evaluated annotation of the flag. + max_args: :class:`int` + The maximum number of arguments the flag can accept. + A negative value indicates an unlimited amount of arguments. + override: :class:`bool` + Whether multiple given values overrides the previous value. + """ + + name: str = MISSING + attribute: str = MISSING + annotation: Any = MISSING + default: Any = MISSING + max_args: int = MISSING + override: bool = MISSING + cast_to_dict: bool = False + + @property + def required(self) -> bool: + """:class:`bool`: Whether the flag is required. + + A required flag has no default value. + """ + return self.default is MISSING + + +def flag( + *, + name: str = MISSING, + default: Any = MISSING, + max_args: int = MISSING, + override: bool = MISSING, +) -> Any: + """Override default functionality and parameters of the underlying :class:`FlagConverter` + class attributes. + + Parameters + ------------ + name: :class:`str` + The flag name. If not given, defaults to the attribute name. + default: Any + The default parameter. This could be either a value or a callable that takes + :class:`Context` as its sole parameter. If not given then it defaults to + the default value given to the attribute. + max_args: :class:`int` + The maximum number of arguments the flag can accept. + A negative value indicates an unlimited amount of arguments. + The default value depends on the annotation given. + override: :class:`bool` + Whether multiple given values overrides the previous value. The default + value depends on the annotation given. + """ + return Flag(name=name, default=default, max_args=max_args, override=override) + + +def validate_flag_name(name: str, forbidden: Set[str]): + if not name: + raise ValueError('flag names should not be empty') + + for ch in name: + if ch.isspace(): + raise ValueError(f'flag name {name!r} cannot have spaces') + if ch == '\\': + raise ValueError(f'flag name {name!r} cannot have backslashes') + if ch in forbidden: + raise ValueError(f'flag name {name!r} cannot have any of {forbidden!r} within them') + + +def get_flags(namespace: Dict[str, Any], globals: Dict[str, Any], locals: Dict[str, Any]) -> Dict[str, Flag]: + annotations = namespace.get('__annotations__', {}) + flags: Dict[str, Flag] = {} + cache: Dict[str, Any] = {} + for name, annotation in annotations.items(): + flag = namespace.pop(name, MISSING) + if isinstance(flag, Flag): + flag.annotation = annotation + else: + flag = Flag(name=name, annotation=annotation, default=flag) + + flag.attribute = name + if flag.name is MISSING: + flag.name = name + + annotation = flag.annotation = resolve_annotation(flag.annotation, globals, locals, cache) + + # Add sensible defaults based off of the type annotation + # -> (max_args=1) + # List[str] -> (max_args=-1) + # Tuple[int, ...] -> (max_args=1) + # Dict[K, V] -> (max_args=-1, override=True) + # Optional[str] -> (default=None, max_args=1) + + try: + origin = annotation.__origin__ + except AttributeError: + # A regular type hint + if flag.max_args is MISSING: + flag.max_args = 1 + else: + if origin is Union and annotation.__args__[-1] is type(None): + # typing.Optional + if flag.max_args is MISSING: + flag.max_args = 1 + if flag.default is MISSING: + flag.default = None + elif origin is tuple: + # typing.Tuple + # tuple parsing is e.g. `flag: peter 20` + # for Tuple[str, int] would give you flag: ('peter', 20) + if flag.max_args is MISSING: + flag.max_args = 1 + elif origin is list: + # typing.List + if flag.max_args is MISSING: + flag.max_args = -1 + elif origin is dict: + # typing.Dict[K, V] + # Equivalent to: + # typing.List[typing.Tuple[K, V]] + flag.cast_to_dict = True + if flag.max_args is MISSING: + flag.max_args = -1 + if flag.override is MISSING: + flag.override = True + else: + raise TypeError(f'Unsupported typing annotation {annotation!r} for {flag.name!r} flag') + + if flag.override is MISSING: + flag.override = False + + flags[flag.name] = flag + + return flags + + +class FlagsMeta(type): + if TYPE_CHECKING: + __commands_is_flag__: bool + __commands_flags__: Dict[str, Flag] + __commands_flag_regex__: Pattern[str] + __commands_flag_case_insensitive__: bool + __commands_flag_delimiter__: str + __commands_flag_prefix__: str + + def __new__( + cls: Type[type], + name: str, + bases: Tuple[type, ...], + attrs: Dict[str, Any], + *, + case_insensitive: bool = False, + delimiter: str = ':', + prefix: str = '', + ): + attrs['__commands_is_flag__'] = True + attrs['__commands_flag_case_insensitive__'] = case_insensitive + attrs['__commands_flag_delimiter__'] = delimiter + attrs['__commands_flag_prefix__'] = prefix + + if not prefix and not delimiter: + raise TypeError('Must have either a delimiter or a prefix set') + + try: + global_ns = sys.modules[attrs['__module__']].__dict__ + except KeyError: + global_ns = {} + + frame = inspect.currentframe() + try: + if frame is None: + local_ns = {} + else: + if frame.f_back is None: + local_ns = frame.f_locals + else: + local_ns = frame.f_back.f_locals + finally: + del frame + + flags: Dict[str, Flag] = {} + for base in reversed(bases): + if base.__dict__.get('__commands_is_flag__', False): + flags.update(base.__dict__['__commands_flags__']) + + flags.update(get_flags(attrs, global_ns, local_ns)) + forbidden = set(delimiter).union(prefix) + for flag_name in flags: + validate_flag_name(flag_name, forbidden) + + regex_flags = 0 + if case_insensitive: + flags = {key.casefold(): value for key, value in flags.items()} + regex_flags = re.IGNORECASE + + keys = sorted((re.escape(k) for k in flags), key=lambda t: len(t), reverse=True) + joined = '|'.join(keys) + pattern = re.compile(f'(({re.escape(prefix)})(?P{joined}){re.escape(delimiter)})', regex_flags) + attrs['__commands_flag_regex__'] = pattern + attrs['__commands_flags__'] = flags + + return type.__new__(cls, name, bases, attrs) + + +async def tuple_convert_all(ctx: Context, argument: str, flag: Flag, converter: Any) -> Tuple[Any, ...]: + view = StringView(argument) + results = [] + param: inspect.Parameter = ctx.current_parameter # type: ignore + while not view.eof: + view.skip_ws() + if view.eof: + break + + word = view.get_quoted_word() + if word is None: + break + + try: + converted = await run_converters(ctx, converter, word, param) + except CommandError: + raise + except Exception as e: + raise BadFlagArgument(flag) from e + else: + results.append(converted) + + return tuple(results) + + +async def tuple_convert_flag(ctx: Context, argument: str, flag: Flag, converters: Any) -> Tuple[Any, ...]: + view = StringView(argument) + results = [] + param: inspect.Parameter = ctx.current_parameter # type: ignore + for converter in converters: + view.skip_ws() + if view.eof: + break + + word = view.get_quoted_word() + if word is None: + break + + try: + converted = await run_converters(ctx, converter, word, param) + except CommandError: + raise + except Exception as e: + raise BadFlagArgument(flag) from e + else: + results.append(converted) + + if len(results) != len(converters): + raise BadFlagArgument(flag) + + return tuple(results) + + +async def convert_flag(ctx, argument: str, flag: Flag, annotation: Any = None) -> Any: + param: inspect.Parameter = ctx.current_parameter # type: ignore + annotation = annotation or flag.annotation + try: + origin = annotation.__origin__ + except AttributeError: + pass + else: + if origin is tuple: + if annotation.__args__[-1] is Ellipsis: + return await tuple_convert_all(ctx, argument, flag, annotation.__args__[0]) + else: + return await tuple_convert_flag(ctx, argument, flag, annotation.__args__) + elif origin is list or origin is Union and annotation.__args__[-1] is type(None): + # typing.List[x] or typing.Optional[x] + annotation = annotation.__args__[0] + return await convert_flag(ctx, argument, flag, annotation) + elif origin is dict: + # typing.Dict[K, V] -> typing.Tuple[K, V] + return await tuple_convert_flag(ctx, argument, flag, annotation.__args__) + + try: + return await run_converters(ctx, annotation, argument, param) + except CommandError: + raise + except Exception as e: + raise BadFlagArgument(flag) from e + + +F = TypeVar('F', bound='FlagConverter') + + +class FlagConverter(metaclass=FlagsMeta): + """A converter that allows for a user-friendly flag syntax. + + The flags are defined using :pep:`526` type annotations similar + to the :mod:`dataclasses` Python module. For more information on + how this converter works, check the appropriate + :ref:`documentation `. + + .. versionadded:: 2.0 + + Parameters + ----------- + case_insensitive: :class:`bool` + A class parameter to toggle case insensitivity of the flag parsing. + If ``True`` then flags are parsed in a case insensitive manner. + Defaults to ``False``. + prefix: :class:`str` + The prefix that all flags must be prefixed with. By default + there is no prefix. + delimiter: :class:`str` + The delimiter that separates a flag's argument from the flag's name. + By default this is ``:``. + """ + + @classmethod + def get_flags(cls) -> Dict[str, Flag]: + """Dict[:class:`str`, :class:`Flag`]: A mapping of flag name to flag object this converter has.""" + return cls.__commands_flags__.copy() + + def __repr__(self) -> str: + pairs = ' '.join([f'{flag.attribute}={getattr(self, flag.attribute)!r}' for flag in self.get_flags().values()]) + return f'<{self.__class__.__name__} {pairs}>' + + @classmethod + def parse_flags(cls, argument: str) -> Dict[str, List[str]]: + result: Dict[str, List[str]] = {} + flags = cls.get_flags() + last_position = 0 + last_flag: Optional[Flag] = None + + case_insensitive = cls.__commands_flag_case_insensitive__ + for match in cls.__commands_flag_regex__.finditer(argument): + begin, end = match.span(0) + key = match.group('flag') + if case_insensitive: + key = key.casefold() + + flag = flags.get(key) + if last_position and last_flag is not None: + value = argument[last_position : begin - 1].lstrip() + if not value: + raise MissingFlagArgument(last_flag) + + try: + values = result[last_flag.name] + except KeyError: + result[last_flag.name] = [value] + else: + values.append(value) + + last_position = end + last_flag = flag + + # Add the remaining string to the last available flag + if last_position and last_flag is not None: + value = argument[last_position:].strip() + if not value: + raise MissingFlagArgument(last_flag) + + try: + values = result[last_flag.name] + except KeyError: + result[last_flag.name] = [value] + else: + values.append(value) + + # Verification of values will come at a later stage + return result + + @classmethod + async def convert(cls: Type[F], ctx: Context, argument: str) -> F: + """|coro| + + The method that actually converters an argument to the flag mapping. + + Parameters + ---------- + cls: Type[:class:`FlagConverter`] + The flag converter class. + ctx: :class:`Context` + The invocation context. + argument: :class:`str` + The argument to convert from. + + Raises + -------- + FlagError + A flag related parsing error. + CommandError + A command related error. + + Returns + -------- + :class:`FlagConverter` + The flag converter instance with all flags parsed. + """ + arguments = cls.parse_flags(argument) + flags = cls.get_flags() + + self: F = cls.__new__(cls) + for name, flag in flags.items(): + try: + values = arguments[name] + except KeyError: + if flag.required: + raise MissingRequiredFlag(flag) + else: + if callable(flag.default): + default = await maybe_coroutine(flag.default, ctx) + setattr(self, flag.attribute, default) + else: + setattr(self, flag.attribute, flag.default) + continue + + if flag.max_args > 0 and len(values) > flag.max_args: + if flag.override: + values = values[-flag.max_args :] + else: + raise TooManyFlags(flag, values) + + # Special case: + if flag.max_args == 1: + value = await convert_flag(ctx, values[0], flag) + setattr(self, flag.attribute, value) + continue + + # Another special case, tuple parsing. + # Tuple parsing is basically converting arguments within the flag + # So, given flag: hello 20 as the input and Tuple[str, int] as the type hint + # We would receive ('hello', 20) as the resulting value + # This uses the same whitespace and quoting rules as regular parameters. + values = [await convert_flag(ctx, value, flag) for value in values] + + if flag.cast_to_dict: + values = dict(values) # type: ignore + + setattr(self, flag.attribute, values) + + return self diff --git a/docs/ext/commands/api.rst b/docs/ext/commands/api.rst index b8ef64cf3..2ccf79360 100644 --- a/docs/ext/commands/api.rst +++ b/docs/ext/commands/api.rst @@ -331,6 +331,17 @@ Converters .. autofunction:: discord.ext.commands.run_converters +Flag Converter +~~~~~~~~~~~~~~~ + +.. autoclass:: discord.ext.commands.FlagConverter + :members: + +.. autoclass:: discord.ext.commands.Flag() + :members: + +.. autofunction:: discord.ext.commands.flag + .. _ext_commands_api_errors: Exceptions @@ -456,6 +467,18 @@ Exceptions .. autoexception:: discord.ext.commands.NSFWChannelRequired :members: +.. autoexception:: discord.ext.commands.BadFlagArgument + :members: + +.. autoexception:: discord.ext.commands.MissingFlagArgument + :members: + +.. autoexception:: discord.ext.commands.TooManyFlags + :members: + +.. autoexception:: discord.ext.commands.MissingRequiredFlag + :members: + .. autoexception:: discord.ext.commands.ExtensionError :members: @@ -501,6 +524,10 @@ Exception Hierarchy - :exc:`~.commands.EmojiNotFound` - :exc:`~.commands.PartialEmojiConversionFailure` - :exc:`~.commands.BadBoolArgument` + - :exc:`~.commands.BadFlagArgument` + - :exc:`~.commands.MissingFlagArgument` + - :exc:`~.commands.TooManyFlags` + - :exc:`~.commands.MissingRequiredFlag` - :exc:`~.commands.BadUnionArgument` - :exc:`~.commands.ArgumentParsingError` - :exc:`~.commands.UnexpectedQuoteError` diff --git a/docs/ext/commands/commands.rst b/docs/ext/commands/commands.rst index e473a0189..5c24f4c63 100644 --- a/docs/ext/commands/commands.rst +++ b/docs/ext/commands/commands.rst @@ -594,6 +594,157 @@ This command can be invoked any of the following ways: To help aid with some parsing ambiguities, :class:`str`, ``None``, :data:`typing.Optional` and :class:`~ext.commands.Greedy` are forbidden as parameters for the :class:`~ext.commands.Greedy` converter. +.. _ext_commands_flag_converter: + +FlagConverter +++++++++++++++ + +.. versionadded:: 2.0 + +A :class:`~ext.commands.FlagConverter` allows the user to specify user-friendly "flags" using :pep:`526` type annotations +or a syntax more reminiscent of the :mod:`py:dataclasses` module. + +For example, the following code: + +.. code-block:: python3 + + from discord.ext import commands + import discord + + class BanFlags(commands.FlagConverter): + member: discord.Member + reason: str + days: int = 1 + + @commands.command() + async def ban(ctx, *, flags: BanFlags): + plural = f'{flags.days} days' if flags.days != 1 else f'{flags.days} day' + await ctx.send(f'Banned {flags.member} for {flags.reason!r} (deleted {plural} worth of messages)') + +Allows the user to invoke the command using a simple flag-like syntax: + +.. image:: /images/commands/flags1.png + +Flags use a syntax that allows the user to not require quotes when passing flags. The goal of the flag syntax is to be as +user-friendly as possible. This makes flags a good choice for complicated commands that can have multiple knobs. +**It is recommended to use keyword-only parameters with the flag converter**. This ensures proper parsing and +behaviour with quoting. + +The :class:`~ext.commands.FlagConverter` class examines the class to find flags. A flag can either be a +class variable with a type annotation or a class variable that's been assigned the result of the :func:`~ext.commands.flag` +function. + +For most use cases, no extra work is required to define flags. However, if customisation is needed to control the flag name +or the default value then the :func:`~ext.commands.flag` function can come in handy: + +.. code-block:: python3 + + from typing import List + + class BanFlags(commands.FlagConverter): + members: List[discord.Member] = commands.flag(name='member', default=lambda ctx: []) + +This tells the parser that the ``members`` attribute is mapped to a flag named ``member`` and that +the default value is an empty list. For greater customisability, the default can either be a value or a callable +that takes the :class:`~ext.commands.Context` as a sole parameter. This callable can either be a function or a coroutine. + +In order to customise the flag syntax we also have a few options that can be passed to the class parameter list: + +.. code-block:: python3 + + # --hello=world syntax + class PosixLikeFlags(commands.FlagConverter, delimiter='=', prefix='--'): + hello: str + + + # /make food + class WindowsLikeFlags(commands.FlagConverter, prefix='/', delimiter=''): + make: str + + # TOPIC: not allowed nsfw: yes Slowmode: 100 + class Settings(commands.FlagConverter, case_insentitive=True): + topic: Optional[str] + nsfw: Optional[bool] + slowmode: Optional[int] + +The flag converter is similar to regular commands and allows you to use most types of converters +(with the exception of :class:`~ext.commands.Greedy`) as the type annotation. Some extra support is added for specific +annotations as described below. + +typing.List +^^^^^^^^^^^^^ + +If a list is given as a flag annotation it tells the parser that the argument can be passed multiple times. + +For example, augmenting the example above: + +.. code-block:: python3 + + from discord.ext import commands + from typing import List + import discord + + class BanFlags(commands.FlagConverter): + members: List[discord.Member] = commands.flag(name='member') + reason: str + days: int = 1 + + @commands.command() + async def ban(ctx, *, flags: BanFlags): + for member in flags.members: + await member.ban(reason=flags.reason, delete_message_days=flags.days) + + members = ', '.join(str(member) for member in flags.members) + plural = f'{flags.days} days' if flags.days != 1 else f'{flags.days} day' + await ctx.send(f'Banned {members} for {flags.reason!r} (deleted {plural} worth of messages)') + +This is called by repeatedly specifying the flag: + +.. image:: /images/commands/flags2.png + +typing.Tuple +^^^^^^^^^^^^^ + +Since the above syntax can be a bit repetitive when specifying a flag many times, the :class:`py:tuple` type annotation +allows for "greedy-like" semantics using a variadic tuple: + +.. code-block:: python3 + + from discord.ext import commands + from typing import Tuple + import discord + + class BanFlags(commands.FlagConverter): + members: Tuple[discord.Member, ...] + reason: str + days: int = 1 + +This allows the previous ``ban`` command to be called like this: + +.. image:: /images/commands/flags3.png + +The :class:`py:tuple` annotation also allows for parsing of pairs. For example, given the following code: + +.. code-block:: python3 + + # point: 10 11 point: 12 13 + class Coordinates(commands.FlagConverter): + point: Tuple[int, int] + + +.. warning:: + + Due to potential parsing ambiguities, the parser expects tuple arguments to be quoted + if they require spaces. So if one of the inner types is :class:`str` and the argument requires spaces + then quotes should be used to disambiguate it from the other element of the tuple. + +typing.Dict +^^^^^^^^^^^^^ + +A :class:`dict` annotation is functionally equivalent to ``List[Tuple[K, V]]`` except with the return type +given as a :class:`dict` rather than a :class:`list`. + + .. _ext_commands_error_handler: Error Handling diff --git a/docs/images/commands/flags1.png b/docs/images/commands/flags1.png new file mode 100644 index 0000000000000000000000000000000000000000..af2d617519a30fddbc867b92e8d7cb1828b2398a GIT binary patch literal 26037 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 literal 0 HcmV?d00001 diff --git a/docs/images/commands/flags2.png b/docs/images/commands/flags2.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d984d69154fb8fd675a01ad86fa54a6a622c8a GIT binary patch literal 28823 zcmdSAWmH>T*EWg-2u^S(NP!lLy9cLeDOy~EyA~_K9f~^?inM4c#a)Y2C{nCwaCiOE z=YH<@oNtWt_x*9k*pZ!)z1P}v%{A9GuXW8R4K)Q^EJ`dSBqUrVMOjTGBvc6EdlnEK z@$S4YQ-=6JcGpypMyeX4-a(uIpb%BWKWY=O@6FH<=a?>v`tC?bgdTri$jjDrK1fI| z>`Jl_Eg$29Hf$dfxvVG27SWc&SW&^;J&~u(T-U|Ba@4f$XYTyrfc3xbfW0wsAVo}>&kdK45l5RIpYM?c83zlGH7G3TzBC9n9&qS> z{Hr>Ubz?1Yz~(xIMgD#WoS6dt9Y^ zqz6Cs0w&Wt?yWMo%upQWYLG7vm$3aV_k(9<1j@?W@cNU%|K5N>h^a1i68b#+@#yIh-^pMF_@;EzCSQpF0Qt|cDnBhdQO!Yv zwQ{}H&=f`Wkx1D1=4X04AT>4B@c#Vr@-*l*4!yl|I|-rxkKaN#tZ!cZ>E5$*WDkzn zO7DC&#nSUB-M)(cU%PikMFVeF`y|81pUx!DGO2URZlGRxvyY9r4I!&zqDNv9jG-us zBoIaKt97pG^B0bW=&`oCUA~^fOHF3n_h9>+$G878xUrEj1}bFh@I`{{@fS^R??*RrwW_Ejrr3-$Oo6)j8#;OD7F;Tq!&-|4-oy%Q`!;vOh*vq2=}a}36zlc1J( zx*5-2MX99ko-bH%?pPv*c+rPGb(HQb2a`#6$r7yV_9^>hI1`uNCg8_}D8H#&{oreL zy!5QzWwl-^meE)aomWfD-;=t*)p@ z;O*`#2cO)l8hsi={PR-D2h6b?Vbq|fyOq`T1j+Cob-M7NyM`d%YB|sbb10Vz1cEH~ zc)h-8kwXm81g>`Y?8l1=+N@LZi$#KSaBrEh-Iw|6aJYM}k6?ZG&1X(})cVnaG&3|9x1M-i`l?>8;X$V%?A2WH2^z^bDmjWubo=u{1ZwSrlkXo** zB5lv77g_xwcZ}QW6_|E|GgiZXEwSt!B^gi8`}k@ms)NwK*`3}^M^>Ze8ech>omqZs zOeF$j?gf=SP33BEldv4rmoSld5@oZEZM4Q=8a3<;Rpw^ev3Bv#Ox&Vc&wrpu#S`9) zDYSX};iMt`U%TXOHvn(H>!A`WHY!f!IBpCk`J*dFgYU135+q zmm&BPWh4ko(4#iX55@qSV=-}v8D~kmt2b&l*srUnYtvjhew1%~-0T*9q+pZ*a69P% zBwrD&>JMChcq=vrc=NH*I1-HGXQs_@-;kkntvaK9tnIabA6>qdxBh29`8Y83I5}zU zZD<>Y#GUBPgUcF$ifn9T2&kx^%TT2~{BC@}PIh7<$!9F^!G=6M=nFH{M#NgOq@WF7 zLbN`kuY;WVPt$NEuiJfd)PAeXNNhM}9jVOC2;Zak$n=fci2ysU+ZJc|VpP9)gz?y+ zoKc@ z!uCvZ6CVw);|RyZsus_F-ph%Nt+aGIf3#X0XO5MA_8v$neDbPCwqlwKRG00KOC_0| z&sj~tY-ytgjgHb9{A?Oj^kc5|1#6#++&*=5P6j(`nIV$?(Ej`cF)htCrPfIbC9{dK6bXyv2=>h5vRgcO6$-@S&As^H{p%x z?Tc}`lxuUM&g!Z4Rt1ey2vC}9TFZd^B%i~~Sw_S6N3_W4t2-P}EJrM^OT$y8~b zawK8LCOgkv%J)<>LgfgEP$iqPXo#3yJIq`mpvwo_A4u_ceP&uNz|(BNlI>YbO7A<(qbQXM>|cdiSwd zQ+Z#-{#?U)q_)L_hhlzm-B#s9{b~Kx9zGtSvI-87CHT+kF1rC#20Wb3%6#i)A|Nw# zL0$}cdf0jkrU|+kHo4v(6TezSmAv_(e(kxf*cHfW7!u0tE-Wlua>!F^v zvGr5JY&ONNo2)MxnG8j?-m+kbIZzb$?T#D7uZ~Qn#uVItela*c95%fnHmKVdqvswH zlqcS|Goa6UyqMm7LVJznfry|P((W)2{Lq%)86h}Q?SaPYIm}`EUp~F5fcJFC$sT9YE>O}~bUisJT0X(| z4EA{;L%%64N+QE(IL3J=i=xTo&GCq^d3hUcb9VGc<)L|e#MfD?(&XiF_`@w$u9)2 zY@`fK$wcXRH6Esn2)mrC&D7bZQCUFq`&N(4$aTW&*BN&=dM-qubf^?Z)lFuWWkoVY zDoUoi9?K&ZJq`*9V0TTfIB5Ry2Q#eE-mbOeD~_f` z$~qS0sAtJQSL)rp4Kv}xY$i@N5{0{dEB03~DbzDOE_|+hpZ07R{Bn$vRP~VAay&%% zj11EC4U#yUC(b-M6`y>dv4Y<~G)=nG)B1f4$xp1Mn5hcE#8 zfRA)ghkXV#i1!>Yy5y5``YFHUPjN3UQ0VI6f$SS?s#r-_>%|j;(B;X1ns70SK~$qtq7eaQ1J{ z1{=QX({`c9q6a;)DG&dFMkTK*2)Xk~F(@8Vcr1UFGTxI0cd884^coH-j60}!fLT!* zbp>1{6U!-CRfzT%%Ln-rnWS1B+-eh1X)s7uizl(^;)WVT_)ts{K$;)e6{Gz*6 zEcu_D3HS=(Yu(jBJ;V%+hg%<%If9)7_6*`P!S_$0m_(-c*C%58lSK+mHItaMG|ufe z%zpv&&!0d4bOxgy=Re)#ms}_P;Z0-L?{4cXd;`Equn&1Wj*#p`z|_%P2Gd0>Z0shA zWtmFH-`*m7I0$gM-rxP{!Bu&QE)=*syDUWy^E=1k9i4Re^C(eu2L~+QDMW+4;iw-> zugqeBZh2<={Kfmc#ofymWecLs;42O{RVw+;f3Xh)Qwi{}rrW_ShsPk^9&i$4;t>fJ z6SSXU9~>JCKMK5R@t4tB8cA5d?^7`_pb~Vv+gk_<+t{!?Th;`uK23hQTyFDgifBwX zeitRGq}Sy3thcxKc%G41U0hszagRDY>a)^fX_A@6DvS2;HFL#NYJu=mxfxEcs$#@6 z#aUr1I~^e`lI))q$NZS^1MoKZtMCh0cK(`#*s1e#*ha^!NsxHO+j^{5%F3&KWF~x2 zSnItDDGMWGNcKdb&)dKyw*hwzplT*hA2Fo5<59#g@MhD$=U4v2KD5UF#%=r2NRUkH zXX<5Z@Ncn;92PW=CQ{WM9Ckb^iBC+H+EQH=hKiJxlK4}wmXv+}^*X0sAW5*y{2%T0+=d;X1KPu2au)G%*waMb_5U?MbAUxxNLr8jn2|Tqpg_Z;TIG{@V#Zi4ZE=C?QFzqzdo0b(TYC7T4@j#aV{OBBfiR<_IU&_l@ue9X|uxjJu@g&a9 zW;-59Bp$CVd~P<=oBq6(OC*-=xHD?FT>2j#gF2K6<{^!tI?d63ZGIq3{7i@_bk9p; zWHIpW!0?aHP2sVUl2S0I|0?$468{*Wa3aZ%Sjk2FCyn=_S=CJvuf*p5S5LV7wFqO$b8*rW)aWB?y2L_#G0##sszLcL z%MQu)%KYWXhQ^^7L$d&o2z^w+>mqr5YxCnLpoqMN9A-3FES?vF7)xNQTU9o>B_snkjzM>Re)2cT<3!-A60Rh%vk_jyk%IRS zNJ#b}FKcGnD`$i)EC@C_%N|F34T8-Hr{SZ9acChSz)~LlBypD6664#lghH zB<1GDBdDbO>ebqoBdb{8S@w#MtcJ2OHW{Z4VT2#LYK~BnU-a2&ayLeGUnY}B0|H^G z%NQBuK8GEzAkvA`c?M$LV3oDvp3tUGy0$BolG`u9ut?%&v54N{O^B0VW@|3K@G)HfL=g+_6q4PsfJ?+W5f@8=`bDR5O&WlP z8(lC}sxG6ZhIhZgB3TOrTVCw`a@iu18614@%X_!`oZcPf>6r3|fpZ&Li`M}xl}%UL z!h+ExnF$Kp8q38-q)Bl5Fk0UYP$iOdF_1D}O#ja50iuh1k>JVo@Ecmt+n*Zq&h*`+ zyw0lHtf34JQxUTylJCBs%B$SZ;&e(LzIe~=g;7fJzDs9rQLm~!RKZuLtI+>>^1Fzt z!|jmPpN@$+glcWCac!{=t}G0vP=(#UOKIA*Z)K^IH6NYYt{HyD@Yq?9w0vAZUayCP zlHg=c!9HhtBuu*d!7$-Ha6jP;Dp5mM>K8TXn|t{O->}e+G8$vuTh@08eb(NPu8(-+ zk~5S7Ldx_O&;1TRb12T_;o~k{(KE=X{F2|^p97}4-k!afTc)-v|CuK$SO%-a$dAZv z*dEJeo9-^5F{Ld^$?CD>>&;kMi{MEtFVH3notKDHWjtc^ZK7Yx>X)N%M z5d3<(mGTaRudux_)7pKTk&QfJMA3uH)Y20APA>{)+=1Ak)w3`^^_9?YA1FM*X5d-T;v&E*;o0<`eC&Aq~ zD427$XZt(aJhywP<*LAO*y5_F_e4OtI#Ip|D8+?_Y19T5tC^P1CISxVf2&Bn$2`#n zL`{OHJB0vzRj@K$0CF9&i5;zF-Gfwxk>IQEN+0heWG(d`w=sn-7BROCKS@?28YTn~ zLi|=I+{b$!Uv458Gor7+p|Q*#vnzjMN50uknciIFv9vP!(zYSLsn6k{WB8bH@?(a zL5{&YF?f(#9hHdZF!}MY-d4xNB<;%3Get=#%$%7!Soa%8EM!PSR^zw^5sG9Z8&w9g zk}$cO-31f@a_JdV4L!ARyv{9#ha1ySc9{IYo$15vMUC|+Wm$D~#L4}M<426+-7nSeypk%T!GNO>b2to}gDd}J=_ruwunA6kNU(alR~n4;S7c+yPK zd=v+UjQ!kN5-VU8+$^m`LLqfi#7yeWS5la+)6YT2QZO7+6 zP6S3X`%cW=iBVe|_%_-z$dE!5Z&S*Tw~G?o%!2F0B_DRwZ}ult1(z(bz#bNHYS=F5 zgB&)Cfi^r5f7Edk>ZJbiK&weNS8wMw<1BPKN}6^24zFr^k|M%x)26>6&Qy*I~svw$3x=58ZV2P)A%ms+il zC@_7*8_Z}Yme=nFnzMnqt5MxZ&yh_8H71dhOSEo!N*sf8qB$}|+PdH6uKS?H=1-vs z*Xh(gsfW#dW6lV_s+dO=uA7x+rvqiB3>a<82+W7sh!xrrmGPX*UPJ+7iLYiV0tg)oA+t*`WIKNO@xoP zsz{uDXn98X@Cog{SQdk}1NW3jS{rr=yyEj@IH5B#8wE@0&f@h?tdU1(>4Uf|T(F*+P1z8O52Xe^$f zc{(^|d+T$n@|wwhxiwGP>8>?DTR30+oXNw*oyhn}MIE{PaW z=A86Oxoe2GURuqzk4&8qaiA5k#-yTG7aS%w z0YqgQ_!wzvFwTPJhfq18AE}>jJ`KqkjlK3y*ktzNk*GucFu*qJ_8IKU!8WkTjyL4G z-{Kb>7Gh_%jbyvJVVzi;aPRx(l${b%yK;u(pP8Dsb{LW{MVU z?8d!XAgBWJ{6?DB$uQHW?YX5m!>y{#O>2m*SD&J{{`poh|7G`Q2E`2}##UbSU0DL> zBKCv0t}@~oj`0;#-Ou*tgrBG zaHfE$hx24ccsWE=+J6CeiLsp2-c3V_M($$2EMRU)_d2Tir~{ z(Q)tAxS3|qI47Mxca1|VyR@`qEhZu&qE{-MH?Fn1@)?*Va)5QvB8yVLwp#P*n+qh_ zDwLG1(?KUG?dzEIj$4s*E-RF^U$T=j3L|Cc_weA1Cs#c>TbFoZiN_%k)?EQ{wUKQF z2CIIsnVPgxm}9TczR2L#EUyl^*^Os~W-hbn<-E~-tHn~xdSh9u{X4K<;pAkucdvKf z6InX%Ne`R1mw%>zyd$Y{=2F&xi1Hk0ZPsL%5@2OHK|Z>SIt7osvUC-k6=P4@3TAk4 z$iV#tNLyYb?~mwcX;d&P^kJDNczZnl!d3xkKtMX4PdnwRZ%^kE622=1DPF12wEfuI zj_*7ntG6(c$}vta4==^=I<&}rcTdKav9wR#kYH57hqqbNln^Eyh}0|>W*sWp^`c$u zNgUqr73&j*K=lz!hGkyd%VLgpE{M2#32zwnB}(e7({`{0i+bmylk0)2m!k>W^iuFZ zs^97Q%e2Y8>EB*+<7McbGvJA2CteP9R2ws@@T zKCGXA?V6TReBVwwn!4;Z>+QwDCT+5x-^0fT*72x=f8iDDfktm%dPzz$5yjQ-1=zhS9GsRWfViq34eQIS>Yi@q{lx#&#-a_5_X}UWw%|9y)qB+c ziosl7C#uq^R$-d!=a9|iY|0|38~EjgVn+%7PgP{9D&S9QWj*Yv+EI&f_Kfk+9)D7d z5e4%29$7IgT>UFf>jRBMv2uG14^kkeub(L`wr=yc2>iUws7nn^!`KkoQ=?49&u-s~ z&h)6p`pgpl1Ej>N_wC+S7&Pm(^|w2k;5+b$CO(^}$^PZ6fG-6l8m?CHxiY7TT21vM zb{6hD1+Wn@RGU8z_&Z{f>0;#0ISt+qb|1GcjNZ}@wONYc9azJxQTL`>HVh=PyLbOo z`sv-{9r6F>27PZ(+KI&Yk)I=Vagxt!{h7<>s)iJp0#)-AT1bfwFCWD zx0ZVnC;-~{WaRp!BcZq4)txV9{vE#L$My1E0lfy*=-^xHX_j5@RnPR7qpkkyy8@RZ z0WZ}M@HT2itkQJK*eggsg2#)_)DsTUfnQf+&ZzC4KxnE)fA-M>x(OkJS=mkkXy{o* z^xIvyMyASFzu>vvwD&2;-lydF9GwZFh6HE0?a${qc^OLkrfOB=9SXHT3Q;c8$?N^6l~ zJcX>}2JrbB$+EZq1IjYi)xSY8n7f+qNttRE`bPBS&teQw@u`yN8Wky3k~oEa0Ar41 z#Tc~{2@||BT+cJj)*+cYE5H%sdc@@rx2Epotkl*i{uIx);!Vs|rPWm`qc6ilVz;nc zNi61^`FdVh*vzE7QJzd}bO=8={>%$TDTy)%Gm<%XKeJ?EJ3fl9r~5_SA5rF~aGFjt zY^2m^mhn7yx49%~EkR|iUM4M8#UkO_&8;X6E6JYy@wH#JU60tsfNNlQmI_ z{@WI=p^$JVQYY`Cpj)Hj@!EBkf(HEu(ju_8Bionj?9^+6*B$P%d-3*uV45CYW)e?G z@b<{6X=G5!6852$R3AIOa9}N6_B`MR>5=Q3F2Pw~y5JjXT@jCG+NxV4&MIp7K}T++ zCTH)e5i2^4Ws%U=(GOIvmeP({Jm4-wRuc$^?w6U~eD%yT|9srOJ81QERtJCAY5#Xc zkJu3G)R{>-@y@9%+lej!zsw6EMOmBEOOt%9QR4-Jk1x{rOAQeq%ah-$SwCtlq?sc2 zG*0i}Th~xrD+#uoN}R#4M3&rx_a#eFR<2zFNb3v>Nb}Y&SCH2?xi5_LZ*rLyCTpqa z$~F?N zn?3F0CMK%jsH_W9R@BVikGS~}(hEQklzJ}*k@iI&SvC)q9IMAXP>z&I%o{PK!E0O*Dw z(cIn$J%?2_ZBYj9uf=eNJ0nPvC~lf}}q=H@KAWOD`B7~zCHb$|7jJ#Vq9X75Piv>}#Y&yrt5 zKKG=orX+t-?VgQOIdbnZ#XlR@72O-dGK_dVFM&G6OchjQ8(WnGckRA=xojRw&g-iA zKFB~mkspyKIWPvE3SnVy8s#1}%xr(t0{~$~u>D5On_=&~JhK3W+&`{l5Hmf{hU%+l-7zvtWAm?AAbHyb8*_K9Cim*GkMx0ukHFmOBhg`-mQ^1h}{a3MT(P~PUr&O^8_PBi)j&Eau znFGH(De{I#wa884t<*?TUKte|4&-7lUN!i z4o>M-9l>ca3y7)eO&G0tiWPsrMoaUzBH9J!sKdMC*6xmaaTAfV)X*5;1)O+PzotLD zFDiNr&4c3UXw!=hG}eW5QL?YNAtyGuzOl3OSwf9l4^p8y9sE|49I$I}WT0!i5y00` zcd;WCl)ucJ{oIs5^GGUbkGMnxRNVLaied#*E>$vzdt!}@IUFc*ZqsHZz)g6Z$vTW= z>l6ACMzH8J%>kRJP(7qL=R{~7xDfjudaXX(`CaAuZ+ip{+RlF}BM9?r6f)(Xzv{8V zUp{{x41=Ng?AH!l2YdobuZGMPmeYvHC61?~C_X-PqT+W3TrCZ(=@rKLG1Y2G=o@K> z&8{e(QQ&!4*y^-)dlbu8))52dk%Csx3_*27SEJKGqc2lZDy);SsvhiY3LD`fSOr&Sq;uT2 z(!Mkfc6-6gAr-GJQdt$+mhCarBNpmukAAGk@z3&dFPhxuACQtYtkXw=7sP!Ud;A)OQ=M2$i}ry3NjybBV@`L=jBlJ~KfC$JuwC z?i4Xvf!4m<7|_nml{KmjYc?1QhFq;k-4D~1si&8182@8l8P9|WEo=1BBVB?T%W@jDm zfc}}-5xyuwi4@7>>lx%9Tx#=QfArlGz`0pE2ziqpO(f_INlsm1b>j zy5oCa8|H*b3$Cn}YRObAsAv?+O>ArTQ?i;7vWRxZH@`2u<9HYymv1DRSgIHnjeR@s zb0sP1SBW8(UJKlWN;KAQAiJZ!8CjVTV}Qz3pnB^y+(N^}HY5`m2Ko97W-z9pbzW8i zLMxtj^_)w%Wq|J5Mw=IEI%iq+ot)yQ3V=a}1$r{nDij~er74)YAkM*Rjug3cHQjZfK{hh4iKIDuRdc7;r_*?D0HF6?uAgL( zazRIz!-@vyj}OdVjpT}wjrqHwr*WF#C5W8@|H?RyS25^L`NcZ!H#wX3?D^8~cGQE0 zj!p(7ACs^P|8DPy>UQ!&Y?i~VJy^3eH8t5$2037djqV`=Rg+ScKHo?h^=)6I7K&KB zkIDX2PN|?<{^fe<=PgxWlhAxKM}Mca6SE2d`{ktw!mVIh%kft=ZTWmkHO0Ysk1^n# z7uN(T;~Go#;WHCLlpRR6lm;~s5&WuQ(z_#Jj4&Okh1VSvv9Ha9REel(TLkc&Xn4>X z?8TRPCls?t8X6mE@F9Sc3(`P$p{pcbDrCxEre!O_cAgPjU#5hYfbo75T*m|Uv@u_v z&sjz!MG09P#CPTm6fwgrDdduc=pzkBf;?9~b=>$WmYcnu*ZC4YIr((IUr&2%*w2uX ze

`XgLv2@eeg#=Q4R~Eiegq>$wbKf1+=`)LaRV&oUp8r--+o=siS!daJDj^!+)B z$8~<7mYQ(`Qj`8htGV=l`HI024P-|5SgpFBn9U|nDV)cH=VR!qwb$-DS~R~UQ7(ou z(%*V4OSa9Qp2s|7VxG=bg`PTLZc^R+et9A6B{mKSJC7q-?SVoa>`VE2H-1szSfR1E3MHTxKs%d)1XOi6W?_goz0 zEJlV!!EaAuvzioaWBY6l-E_*;oAEv<-xYW$;cu9Qu$T5*d}&(p@G5x=!XSXG>p+^1 zsYCDxv>J-O)>T%~OUc)&p>S-Ui;@$3wE47jnE^6Eu5~L`^Wb35<%m7{<%LXIeCpL2 z@$m2h$G~;QMMb-<%(X}L>&Y3h5WX4C&$@FLJ90u1BKL-FLqgrsRzC zQcIitp)e&OZmt#HXog5^S+7=~!dmO%g3hg7lLABp8XHHZvZJ%K8XmL$pH)mF@O!l@ zuQe<$xK)1^vUX0R5xF;AWqs4-5K$uSPkX16_E3VdAxTutpqNr_C2HEr+4;NPCK7DM zVZ`P4ym#(e&lZ?8M- zW+rV^a?#}hO({)GGQ@iE3$uWeuUj63Tuf2FP`{t<)*E47EE!^40Tw+}dHo2Jp+X&8 zE1bQ~4niv1uy9XyRk5l`%)J)O+ZN%^xsj1zfSiKo1;5K?s_tnfl}C2mo|lW!L{|vL zO`vpR;VuhZP`7yJYF6%oQ%l?vT^OF*)slBl{^L2zA^+iaQqjch>_9@1Ubm`F&~*>p z>D^yZ{=T#ETY5B^+9?WX9UmeBZJE{`gzwL|E+usD0g z*Y_qImnObIx5k@Jyq@6{AG)AYM#W9Xy+m88vJo12|GB!aa{kO)jvdZpYn;4m3?<7Z&omZE z9vn6WJEPvjs>3FhFPPuEuy@Koq=qTIsX|>jf5{cV?bqIR7+C`3!O$hY6ptnLSo!pH zqyM`*|NSBEW1CJRCU%;*`=s~3F8r5wc5n8f(3|q&S837V4*JVC$r?)&{jjA_0Vfzi z9r8O*`&vmV+6)@|zUONkkF|S)_(%xDyrmh{P4Db7?3l~58|7sHaTYKQ2i;&r-75-S zmwW~a4n@)3TE`FD?dk<%EblmEuXgU}s(8h7TzN~rx4Ec{&AG5pva45<(Js|U^u8o% zR7#T^PvO6k@>WLGQhResfj!U`lbNgAQje%coUQR46VO?O$`9hh9 zzd~yp4Hm-|K+CJ~2e!exeEwBFl8*-|S7+C859Fv4rFsDto*&-xNiDP=Oz0Uny~~bK z`m%YH;8{?S4XaNM4As+ZtGi5&i~|4YmYa1+pW$phM%mchJn@v6pPyeOS`045a{+~R zqhBGtd%S@+5p?s*;Ns%C>`p&-_xh`q8Qn6Q=O?EXRPL*n-xkLcw67mWTD@g5%J~@g z_JsWV_O1j5&Uti-Y5r;kR*}El_Z^q0vQ9_Sz8`|6lUN5y~2 z4Dg5)U-hx~FuT{9hH_ugNb41KdDp6Qjm+NX#)DHE$Uwb$B%+>FBZO7{qu0}yQsEw9 zqd+-8A+C?W3RPbxpMtXaiEe%m<;H%F9etL=QQ|EUafa>2Rd4CvsX#&_jz{F_D<@EG z2qJ_u>Dhi(!%IxYFonNcK=-crxfFUwkg=-P`S|_aU>_*eT^_)_Hq<0k*P-rxhGpgP z^(nW1SJnIo<3c#X&vXy#PChMmpQPs32QP9jPLHZLDrkl)+&-IC|H)J1c?J^g8T114 zhuTVhxb3L|^i3IJz1K=iFpAi7b(AE$hfHT^Vn2Lo2zG|8mj4`Ce@y~WQH&N38G1?O z@^&&HJ#qs&1A1W$-N!B7%70jTsbLY1@)sypVGwXyu}cLCjP0yhnW`HY##p&Z#`$_z zSd%iFRSn}r87zGKIDB?#QSp+kv+Z48u)bVeB3~OO&#M;V0inj7nn-A|T;gIfenY~b zAvO`zTMEx9>qTzZv3%mU?etJ(Me4j2MRzyT{LpK(8 zzY96=q0aZd%-(Wr9@xmH-KY9+N&}i~E$r;RK*xnEd)A2*Wlz_P{w zY`XsNgi&X`d4{VUbXk{wase^;?hx#E)J7)pxNX7VK(L4pgu+~KCo3D4u`uwsl6rgb z@_Otisi?^y`{ak5q1nYB%We@>Q~2$#cXPd$e}oZ;SY+sWr3!GMB2a}3vv+6eEUVu| z4(?hE*vl}i1l0;dREtDjui<*g4|n1&mXeA|g5G>_eA$-xh-Q$zn<=FxQsqrUyq(SV zX-;m&H?a)!m6cBU?r+kAqvP(^Pm=J+;m`_yQeAgq?srToXBo6gx;5X}Ht?Q(gZK2F zv=te8$42YUcHttS8hX!h%O+YcAfX|)-Pk1*bAzqMCEciAwoaqwu%>b=+^#XVDZlo> zcWJLXtI9-gflFA~% z8?#UD6oyI3*!=wbi=nuq8)+{M`ey-3piqyes_d4oz^8{Rv(YU6iOI<>xp9QD@OrCU z6HqAX(1f{n1J56)VeK6lkhxfUmbgt789qYew;9rF=^+Jiq*KXv&8G%8#)Fp5FZkhCUn_Mo(6M9zGC18|=qdBV? z2a~l^@Q$vd>zJWDVN)1n#}3|^;xS>Ge-i~Xry-06x1gd=b-gagoI9Qjpo2vUxw171 z8wLr!6gQAn1t<{){2<^JA$`0GdLq-QeA_3;-RCLU*k4*#M|9YH#?cWHI#t@_yO<;F zemw#bQS4kF7r&y8rQi*3nUtSc?d~u+f9g6;s{IYc<71R(v1g-iCmW4*psCX zt~GRjBe2xm{wQ;k6)8frXUcoX=y~ib^lO%KLj0;pWm+zABmL>2BQZdZW6?#1W@Qfp z8ZaR)kkzY1Bs9hXZA3*Qmb!LE2xMdFB=e5w&citK@W}$M?v7(ja3>|!9k~6qK740j zhXov0 zU_`^SQ&~Zo+Hj|svaSvbE!f&!g&?{qQC|}kRWO!@&bn6}wV-d=DVsRd`>njj#uaz5 z;{r0*@bnxZo7BY_cU8fm4+^-ep7`!arJ|@7OlRzmd4H@RDFF{n7(xgXe@91xZ?U&t z{zt~9vE=IYw=1lY`BWP1%s}TH641FmfQ^Paz*P_f40JZ7?QWIDo&WQGH$E7lv-3dc z?7Ry6RS61Z{@060|M$yO|NqniR1Odqtq$AxF`vj^2RMaugbJt5O6y;|XtetgM}03z z+v84--m}Kv?Dww#7!un3J_=0C{pKrF=5?RuoBdEM&Cr_e3pK_HZ_*8==-ky&G4zDIAZeKXe z-TRFSAN^l=LCv(J_=wV^o{H6_uS}Wi6+~ZaJbw z9k!?(D2h`{1RDZeyG|MSyq<8EO=0l*(m0Czm*aumYI(scS8eEm=GO}*VO5gk18NfC zK^-_$w7w)+iR*O8{>Ks?KROId!mWnfnVK8_JBsp%Vp$E30#W;1R$(erLv%x6QzTgF zRnvA3onqJkRt_AKshMHh!HkTNumjlL5riL5ioEQ1;(7Trb<9H~>r72nC&66ZIps_- zt0y})MaKg==WuwFU^~&LIt)ZqeU!?4plX+W@PsJArn|8QsY^w@FDc&nGW0(CByH$G zjq@u9ZYIwRk#@uCji;^@cQ%uyj#W{#+DQd4a?D0to&Hn2!=NrJJJH02YKgI49AiHX zWPl~sk0$$OOpUtExYu%P=;i|yL|M9amdaf`zTh8nz8+&M-spuu-Fd_oa`8%A-u$sS z(`$50d%FL<@L|mF2AAwmo zoV8DMjx^Zzn*n;1FO5==S{kCgXN#v`djnmQmr7!BE55MY0l!E%gOhDCzdepv|KZ(F zCx7)N(MbF3{!SDe6Q1xsMl|CEUd%kJoeqIPO2%9;q!B3cASmHC)up=9%dSqA)f@m& zcXl{Zuz?6W;p5*i@bqxE`G zxBbf|%|<=Zs#KkiJRSD%RK(;#P&nQ{hCcJYzLr6+dhmrCZNGb;EAtwauA6q0|F=8B z#H9X-0#I&Z>uWx^^rk~(!Jm`=lp?~@A@5pQoqLkOZIPJi`V=KLN{!~oDdVFNy|34r zU+*No2{-#$&ntv!JD*6f&e_4JSryupdPdJ^e1EX|Pu;p~LSPj5e6WOw4o--=#Xt79 zkT?o`pYMnk>Xj8YUx?#V`5ftX@vv+)|2Z z^k)q@f*>z@6n3)ZJ<>&iBpTlMj%jM=vB<^meHnf4F1N^C$H{H>WV^U9FJGMKPb7Bt zw0V^7Bi+&<_H~K6dC>={cnr?L`6;lQ&ne|9pF7bR^ zQ+yP^-R@Us1Sq62j@W4Q$!B?P=kA6wd5CMo+V}JN9`_Em0hs3e5q_X%;|I~soet@q z`8>?8e=C>6&5HUvf&De0<}({<=5gLtQ!+@;`nB-D1>>A+Hs<`qu)Yvk9Z$m@4oxNs z#j}_~R<^L*n2^Gr6nh~eum!EC9rlw>b-jqanz$BA3&a0U?m29W5IMH3Zj#uKi&Y?e9bf& zC8fDfr;JnkKdqf*R2*Hi?}NJqcb5P`f(_2#Ng$9Q!Ciy93=&*|yK9gH2=4CgFu>q0 z0}M{^Gtc{+bMHOh@5foIyVssw)w`=||9`dD0|(T%9n|y=Ftm~FXt9_-0K6WrQasC8 zMIRoMqyG7DI24GS?} z-{o=|YZ9c!)hi5jQE?!KyJa~;IDP-vi9<^{hIe`;W#oMZ9TtM@)NVN+oZK0y)OqFd zVX5=7%*Z0+wLMuY$z&l0d5*#*4?G-D%Ct;NPS)todMDQTJ(~~N&SV14g^mOgTo|M> z0|)ec#a3XZefkoOdaOJqwfT89nD1WO4sw4CIllWr@4>K#1Fs#7qxOr3VC1`}{J{9R z_{*HrH5xHAR=|WM@@w`Xy5QJ((%#@zpY;tp?&+M zL{oD$`Dx27z29^GjsDqL;p!QBVZABo%K8nP?cxe5j)&c*@!3js;$*MknkQk7@HrJ; z?N+g9-DF*m(|o&(>^VbVq#T+)Ci0yJC~(%Tp@PrfpJSrsXZNYIE`XB$2VJWc{vb8X z*uN7R-MJbsJ)pc8%oSK;(Jy1k_oqL;*fEetPBo9;E%-X)4~1(W@@KiJXuLKA*6IE0 z+_fD<%Vk(PrpP76qu+X2=tlFC`QrHs>sj>`F6(Kx@JDzdI9XU2pV8uLXmn$Sj}u`{ z4M#WYLNm5Xn4Sh()D197*oKedwPn>=NP6hmW-Wtx90lXV;J$SHedC9`hsAA&T#PRv zQQj-=)c#*@xZcn7*#+YzSZrj_IGvQLE9UZ2ei>l9-GCXPSIulK#WA6Yh)Mj1Bn&?w zNI{RhE&A3U`eAow-tl2ocXJMA80fL)i|2hKfuj62w#$JQ6!;_Ut09Pb&GXXk@3JVY z=YiG-o!0k}*XLrGd}5H+ACcDQFa2Y*eweX=*Y%|1!2!m>Vs++^Lbb_GWLm!~g2&C| zg{Higdq`%TlWI2ry2fnci4SDP3H_CB-9en!dx{UF5m^r3pYZmVi~IZF+KLAOGg*a) z6+J?R!t;u*-wZ&qC0sK$f+ipUt*OcMJSpoV0oy!~B7CAZ85Ex<9;w$JM%VL96UAN_ zT*YqVt2Gs$=X?XzCnC{51e9O&$K@6m*NT`Hh*oM7@{8e`_#VcI*a_~C@aFTf>H_q6 zEc`H8C>I7lnFjU}2~z062xYZAiJ4MMr1z*^Y&Gv5Cr0R z4hJD)!!7p@kU1e@9Fa#JLadXYA6P3&%j0x;PwCKuga`XxIHeNm zKFdt4E~C-oHMh+4;)#om0TjDXIygJo~qWsiT1nH{l{} z(b*|#!$?+SXM(hVr|)0FlfX-w1X#G0SjQlPvhdR8bpMu1%iw9&a0BN5(i+DT|KK}> zJZ0nmj0N`}Rv(hXfly^gQ>oF48;pnmF+2|i%cmGkPz)yIo0x3}j%Y|T>#v#+$na4P zKw5|}l_uJxpce{v454lgwIIU`E#sIM^bg5+X1jyV8oK z#Cpam&J+D+>iff-#VYNHth;Fq-6rey2MvJ)3l^s1fSC!`SUl8vM>x^w7DKSr1if5% zmQ^b@b~LQne$S(PWxyf{c=-5Ek+9gm`?KY6kJrCpO+1qs0Y5XSLDQ&o<32m!nc8pf zryv(Qna8TA95VguCaBqIkMX?BX&HD%d~(mByx@9MipAjaaNO zgvZ3hXu;DnDl_ZO$bl8BjB_LP$J4qOLwcB(tqpsY#iU=@AY%f96%l9hBqYd*)WR`( zdy|<6KC5kTI0M_&e$e!w8h8A7K#F>zFU??O(dAEUP<_3ru}3TKkKWwMjv(yO;Eic{ zlHBBK!GKaslJw$%%Tq%lw8r^Z!axC>8?J=Sd)7b;4R@=MVW~i;ss6WsQw9bun~v&F zp{>z0IE=HA#;1>7aXq5vh4j{7lb1UJi8LM?1R-WV**IP(FW-FHAr(a~Li2&M4!pc- zRYFv7xMY%+xot5)aV#+)zPDG@i>`;aa|Xw!LzOu#Ce!e=w+GL(v-5dFAE3>AUn*+F zdKX1m%%t{`HB|jH$jz8AYc-h!2`whdUQ>48)0xZDF!f_OxE{Bpsiz2zc)yvPWcml+ zWMGF2sv_A_zM+JgO}p7_jyFED{~Ydmn!2)g>s^Ha-t(NcctoOqLDueS_lUv~n8#5* zNz!AqjNEZk!)}}xjCBI^&VawIW1;oN@LF(CT>`X6C(P6nQ9o&wGAYJ$E-}o zuoZFOl9m7wfmwJ@s?uhfJ!X8-wX-DcHaTpA?@yFaThr27zI_nBW%yylq+Hb*KXHND zg)HWA$H2FQIa&gK!FpK^C3r3u#AV-&!ISuolYnKc{GA|*+@Ie@3{nKBDQ^5t+Ey%P zM0ewxTkrZq3!-L(@8bAFFpz$rn{3gAP|M8na&cWDx8j{n^Mzsja;{JiG~@64#6@6? zy|-hTflJH8tCoJy`Wy42cGmdkDse-0^FcJC5Lb@%D4B`e}6v|=siKTW7)UEv6? z7jH=G{&QHfX;8rPCL~Y6Lmc5U^=O+JPFm|p4rho^kc?5`)She&ezL_@uX4n)7|^;I z|IB;3>nAZYmUGH`O0#*JNn?7Q!MfJUpdq{`&t^=JUaTgt&+sY|KP#GCaTef1BEjc_ zutTs?X!-L&ghWqayTw1oLXwV{D{yaDI%_X0gzgqN&C9vr6}o6MWY<|p&nO=z_>u7j zcgrT+bwA$d|CpF5Fwic>+wDa8Y)37uum*K#6xR2PH1L$3-zc->H8O#O(;FUo0aA;U zCGoL;)6}b6I5i0#dtFf#SFQshZM(WClTN^Xgk5DiT>6H%Iwfw19;`*vg}a2ODGg=w z;nlFJd^c{n{FkMEqGKXRlJv;e)KYX*oAp=+87d|Oyli66fx|qy9*fHA&t=Z2U19S7 z)8J|Yem#H5g-%746uS*r>LF%TI;QDGwY2T-#&A=mvUBr2k1-kc19;irbRjYb!S4Z= zDj;MO{B1k@-%&z+fKo7+gRhIDNdYIe|%Xc5|mbt}Zw*mrS_>0@}ze(zu2+ZLG z4V*LhrwsE=!3#COXN+DorJ{p+&3pOq%R{u#dMKpjI;HAwR7oxdLtUC;PyPENH~0Vb zM@<;4<{>zadr__J5CvLa?AtoAttQ+BnAo$wFGJExqs?t1q+Wa+&$VkX7umhL{jU4d zpd0)D8VIjT6NuJ|^tJ5E!#|-1^{v=O6YlM`ml>!LefOo_{n$BJt_@)5X#ztysYg%m z{nw!QeH$z$F$68%IYjU~d(-K%`l}7YYQ>0k#kj7{C$!j}aSz+jdFW{Z{Ez(LZ%c zb1H@H8IKzRi{wsw*x9DCMRkoN#5kNTfJae7^WwQ~CNmePRaC~UT}Q?LNRU7|;ppYZ z8h^e8?=nj~-TA>gD^L*U{v;+DQlJ$@!I>D^kT3b`!0*S_w&voLpy~l-u@gIozZzhN z51IM5aPYFY%Kz4Vv8~{YZ{BkO=1qfJuWmj0{z#H;o#INh{a|yC(K?;B4*R*nV}p;E9-MRq}yWZ~s3+nD*9i zvEz0L(?PbVhd7dk!a@c*y&!+}5cVE%gFuvTRiuF^^m~M9~ba4EH z#i3tP5%I?dH8kD)FQhDAIL+1*`$rQ{pO}-{ygrip558M%X8Y2N&>5?H=boUtir7Aw z8}_8!E!URXAdOYr@1n0-DeBRXwvHKwIPi-^Q23&W*oOT21F@~RRRsv$V?-wgTS?f& z9CRu1Sx9^V31_p;D_Frtb*YXtM%?37L+JDb8Y2@yFp&o5d?c2TB?{n&iy_ou^Om~< z9^s!EccM%WD%rN*ftRbG=j~_y54aJ9U|I$Ug{TQ0*`_`2h=nh19QkiYEg`ZuIqjA5G z^2=H$8ReDwoS{>BJ61cF;|rb`N3ZMH0Fu+%L>3{So*`3E6_O>P5(h-Pzk4Rk%}7*N z@WOR@u9_4#yAL+|x-Nf6XTemj((dsx&kqfBGt4;k_H=csj{3&5q(0V7OU91K^G+C1 z7s)Nki%d7nh?sEbc(GamT5c>pMN3fk_*uz=Wk~baW*b2y`W6zVC}PMpQ0De>s{PaW zi`$gf<11TD6mvR)x$$7!j@&Vukm#xCb%IVi1rC0b4r7MQeah=)mgKGr3#S$4+>O?P z?=#{amyunFot~oz05?}rPL-M5ShjaB8rBmbAKAPvIV0$ntgje&On>VbOM-Hr-qz=! z=Csuj>)g`^MpoDE`z9@RZx-}Ov0np4R*w4N{U~jCV^2ery>d_e220Rb zf_1b&j#-n{7f=pPJE@Fr{N zdLEwdu7x(vsx3F;6&S$C)MZJbqFL@$UXsi^!#)9ai3Wq|vXpZCLEt8Cl&KBb}hIGIaqD+I{y2j1A za(d%^CiN~iIHG)^Y3OkV{~#A~P_D7giMrTk0#VOJ>$+9OOt-w)u<1LDugFd=@nVY6 zM^RB~$WE7OJj!)#k_#Uf`^yu}pl$m?wGR93gxXV4(WCCAiPnJ5kceFG!SdKKp;agj zVM&^szLJkan0!{W+nYjzBP=25_a%OWgBNyv&_n!-J?+;(Ua0rRT#m)id{*uET4w;# zT+O0O4&KA^tqihU1tFC>ar+E(hP5TNboY>Pa3mb*l+`xxrnvhJ&Oyj5GiZi1J(-rX>KGxizR0FSQjO^L7 zRH3yUT!I|`O>@B6mDA$dJl5^X3(ty=0w26Wfhi8k30%-7%k~p-*~6w1bEZmZE=P;Z zctf=Xj`%n@v13{C`f{eK+1uPc3%+F^3*`)q`zIxiuik)oFWxM#cMsCG!nT9< zY#Udq)58XRzyJQW&^3Q7lGUv3nf?8Vw!KwfA4I4QF5fhsPQKA~c$s&*IT%at>^*H) z=@uxX;B-nb%5sCf=3NnSs<%qm5sQHWjxwiW*3#a=Y^}e)%Un_b+A+>)Y?j)*dw7wz z+BRUEY=A zdJZE(8|+>ZpjdPPT_BmWMZvhqEG%g5w}`z6>+DkVpM2zR;CUJ5iBHVcFQcx9Rv{vp z5&GXW#0`VYRvHl+-2cMT%|l0nM+C;J?nw0M`z-}}E}VO@Oa0J3vTEi96?U{vvpENt z&|t*_3e{j>;kPn;KYLG9gAR8RZhrZMstJ{S?XfGutJhu-LSeQgF#Bm8ZMW&DWbl^1 zfqXqI6)Ed&FRZnL{HUMr@s3~dZU(+G_)*HHUxxkIaPdmF4;HKwO)W06A^G9J)fb*F ziHQF*|C9cDZ;w}Ywm?pq01T5ZP#V@nzCL$x+O~4nO9tJL6=^LO>bsvEB86kGfrl%$ zJJz}YB$DFaAKna-p`H7h`!4-V6S(Yep&S>HGK@XCEGEd6_kWt6dnKTJENaz}EGYTQ zm?wA0CtkfD`Yc#<+6|=~yN}(i#&J_kFJ1|1*ERRTC)_=9H*jctTPv>19NfT=zhdZd z1QB1jmoS0@Th|s;ZzLc{nY@!$BbHN^nVUyOiHaWl%m#jN(0fBr5lclB)JpW~1}AmY z4o%Xe0fF$|M(5S zn3G3i&|2ZKv%6FB>Y%R2``Yk(sT}%b(_dlteVO87;|{D-Lgp3LKl)|;my=Olwcv0^ zF+{CBH2k_t411K%rfktS%BT4-M&zS6az(E!S*2Iio^i@ex&M|MwJ8sr{X6eaub7I< zQ$utOdAc`T3%*@{=_29+e5|Xe{RoOCwO^k@gtfud38c>wf6o{JPkYN}V-fp{%@q(E zrvH?Fu$5W4SSnH`RX5n;ie5Q`zJR5U;~Or-A@xK)OcjMoJhvikq%FMVT9#&?dmfj{ zrT)OSZtfmDIBvx{s8h;N=zUS@jM0va@J6l5UkOFn*jnK7GE+voAsoy}^;O^UJWy^^ zr=VY)yK%=0hFzMvs%x~`bQEteiIjHzrG$NleS4zuTqQVInHwQ}9C4T#r=YPPC{5!z z!*ut+;y*Te$ssyq0IL}dsuml%QHpj}_D{c}#3@+kL=<1zDey=qKK?s>qBF_37!sMW)+p}iIUYSangR|6I#H1Pwi^*+;y#G zfyPh%n-+W4UdWbUhlov^b7D}dq#{+LX;D$IVYA=^$=4Lp7;5u%?`Zt|G!>9`5KXzy zp==zBKEu6Ub!b?sFiGhCx`I%KjnGst)g&dQ)_!v%d1P{%+RFh3i!?N<6Di}EJn(w4 z@EW0qE&MaU8rKq-sWSC*R#AwrW3~;TzzhDWwbov=##t*bQd`qPN%`>wGWw)j?nYKA zsog$cH_ZE(<6e4edulOP=5{ihoUQtBiLhEb zmz%(y4b$v_UulVkod^rFKqL0 zDRmd9oH@i@vnsVucdXsLOeZQ)+FKvg(jbK-Jwu8~!Gy zO!%E4poc9Wxrh<#e%(U|!s}vOZq>hqol9$+C_AppWKXri=tdVoc|~@j_>XLWIW4jDMjleWl$I#~Z$ca&WE!OKp9!2E{?9dXQQNX2O20usby5H)eN z&?Csrbp~G^?6J8(Yk41MwJLiMoiQcG9Cv7|D2i$EMc_4x}qM!hhRRR9NT@bx?Ep9 zsC=RF8n$U=7VQRK44nTxo~wUHyVNJ5vTtM;7cCWp>OP}w&>dr#x!SiRoO$$1|8fyE zBv~Q2%32+Dy2-q&o6%8GUw3F@UB=4*Nazk;s!w@@Rq8$#J_L;9g4z$7qrn^E_6Qg0 zI5a9Luoj^Wr3f+mG)0l+SB0kyZK)+bHsPsH;|=MZO=gNbv#(|ouTdQ8d>5EV1|FAn z+XpJpRD*v7m72V*GS99a6yb#TJ6&+_w%KmOZ$NMHxzb`QGbkdacAq-NQQlSUJD3PV zj4TULQrr}G+dna);{6BnWGmpk0ENlmStw1Lpndn<*jTH{!YS6>-e&v$xb*udb@B9# z$jt=Gc_`~UHLuGLpE~1ar>m@aFgub>9~wCLQ0WU!jFxyQuui;Dh|@Lq*aG8OG)s`f zog}aI&09p}eW}i8(}T&01OEW~K6F9i1*n(-Sk0wOa^8aAlpg~;Lt;i+lzM}SioMT*(&hWaijJPLRPHR<$H`d+eP$i ztfvWtre=GzH7qnsy;J6?c2O0^lk(uK`3tU=faC-VRpxQ|jH}kc~SFlsaB| z*g-j6n%_u0?>q666I4Tv(z)xl6*9L*amn)u6wI!wHA99YjYcstY2EzMb*fW274rCo zedfv&lHL>YwH&*-N=W+WoQa!9YBC8*Q>a*Lw_LEY6d6D+jzpn#uL1{?JC^Kj(GW(4 z1ZW4;I;m5;3T&OyD)K)!G`JxS(m8Hi>}zt5z^K}y8wfwFAnveI+Mi>S_T+=20d zY>z8Yc1CefrnEz5d;hSaWPKZ`qE~t{=t93o7tY4o5(Fc|TRG|(cL^%EsY?eknQm5_ zvTH(Ax9gbQ4VDz-=0+xLfKI**?F4(9NpI9pB-%N1`uU1}+#wANC!!~ulQ1@hY3;uL zw#kQ~6F@JI0t?Tqs@{9pNn@P(rn59N)Tdpl&%vbp=yQ-!q4yV=EYzl!; z$|p9Ik<<435~Yf{I)l8lU2QJBoJYeZ{+G?e@P~CI0pKKXQ9 zY8*_y*s~fIG}R_W0gHUcfeEVcjcomr`H&8!i2GT7OFSZQyKUHvyeTMyH$WqE*LTY{8g*AGob6jP|Fu z(2xOrI77RDn06nLOh`YgQ2P6TVn*N4bVM4vrf}Zb=FPa9>hOXq04sk#@bunxSzOL^ zO9aA2LW{<}K~@qci{HEGFaSBk#o(sqlz4JD!MA{eeWZd}0^K1k{Y?@*@tXF@hA*;H zajwTvBY(-%Mp6jm-CXo-`=)Fap2s(cWB*FVtdZRk^8x?V>f6Ii6jl@_tf(5doA031XxMv3X?|@*`!USwH?+rSsJKjy>W7xirr8Pyp3(~{h-L7gaLP+}R zPrBfXqK{w4g<>CF^n2Jd(aP@nzCVq}40pbz9A)>UE)qnkJ)x#L7?FBKMa_@X;^Fa8 zv@gdmpa+#zReQvAH(mTk5ftZ@U;0Z(Syh)_32%0jN(oiCoJ>!mV zD(1Bv5dqgA0`gUYimyM>Z1R2Q6t5DOa$+7&KYJ?3fm-{eeF2-Gy{k=Hz#J4cn`dx9!*G>%l}GAP=) z{$-1(n8M^1!ht$&(s7(MEq>L+*G;oh=fEq9-)D4e0XQNGQL#T#4#z~Z4;>GUB)qhf z3ZDD^2oz(L(st}06%dPhYHn#Fk`~`Xqvv#TeZRjs0Do=8Wgf;EpY&3zR`{q#Nv&u+ zeYkCt?~s9Nd_~jzVuWuN7;0=+2$~AFwO`Q#M@xwf2CF;-j%3AKJoas5Y@x+WH`A_- zt~a3|8X=LUa?Zsz1=MjN`Y~jb-$8GKzks(ejqiE^6k{D~UGbV6p{$Bf3jFtq|9Bv^ z;IY@RX=_N+{4{(C_NjcHM2--YK!&1C@&R*}1(*~mfA+f2bT1LOcTz@Q>+E^#O#*F@ zP4mV@2raN14#(4utzibwajHkEpQi5LBsHOU#^5x1dPjHezcWR;RoRJ=UF2K2Fp|EL zAII#&bde(~d2*)r3fy9L=qHny>cS6n9J)l#5_W%h%RZPaEC&bR+O_rf zOsd)*DzAl$iWUvV7o#e~~V*SdoiuaQ(R71C^Uq}n zuu)tVezztiYV_`|pgAM2wL!Ry=2>z}$~4=rcQyu96k`wW0#k^X3`U|qlx`9C;LBCE*v>* z`h=KrV?pD5=QrW5Om#bhx^$kV;3##vSXfd1R<*OUTH;_TsDcx=JS$Z$j7FhyJE?Ey<5iX|L_w>bajhEm>Tzc`Gti!VNmWh~ z(BKMCd?M=oo+$hQ<1Q3@1__;IOzRKoxB^h!CoYol*h2^OXg6w;&#h@a>R9dYRW-vn zi#UR6Rii!m?9B|dLei(|&2u!;vU!)*&sQ&NRxLp6kI1}HZma-^37;W4xaka2DZ`AM zXhBfQ^keEKYF3d$=ISz0qk;vj*}!$nv4wb{tg4PSTmXnFza70+y@DL1tDxB`m6(VT zN~v-)v6q8*{J?3w$&zyP3D$M|hx=6=og!3UDnoXd6zTlblq(bQA&7T1WsF8yPJ zK(JT$XF-;4^AARY!(3+PYmj(b!s&e1(O7I3zO@E#Hr0`=h>7uf7IF5*~x~0~*%O<9_)$2Am6sC~IP6~oWC=6OX+f&pLM|FeC zKz7s)tVCgqn9gyIDp=~5up&U~=gYW#cjebjI7eS;Hd&mG*BYk%)|>{H9HaBd-qBiK zYpq^5W}mHv-u0)&SGn7+j?!*va)++Tb9lz+e&1hoEDI8AM98_YL#orJVm5APXt0bw zw}65FL)ASkTf?b3=aDt#o58jP8_wgmp@|G*nS(J~EwrW%Rfwauag8ElAQ~cEZ=M(+ zBt|tn4Lu=iTtFJB1$8LqAn$xY$@vle${ipSwk6n}R&CZ4#F?m`dij~HehS3J2JcQW zrq~bFD*7dnTiw};@@+0ExxMGin7cP`p;B~2n?>w(1Nu8YUiYqM?PSkXqh!L$uB0aP zm11L@oj`l$#}4<>QNCj6ll89VlDsr>L_KK?0k34+R&~XB_Z8M+d^AU}$f@yY2F-(L zxjoS3YgHs3hpH~1qcPTQWSMxuqjrxmi)8=S;_fFXXndSwope-q#G3vKL%0CN3didf zgj{!&9j@{q)avhPgNa4;RN|L<9j;z|Ib5H;xNO3IYxUZuXrzRW-1f(OZ_!#9stp(q zP4H~f-X=Fn${385oJ7eM&S1$kdutP7KTX~+)wr5C`fb6R3BE`4qdnlCB7Ma*Y45eS z3i3g4wL|;+meBnwSQoM>R}2~2s8G2n-EDq66{MaZa(cD4-9Ccj7K;gk%g5eelNQ1K ztx#ff;_Ft*C$%t8xh{gIe56X*sw8VtgS1u(z7dbgMb_a8;g>HAtOr8H{o zVwAZqVJE`ntEJr!Epz82e{Z{Ra|Z7<5N>rZ2D9l=Z+U1RF5?#5$74a1bL(OzTF8rN zCObJm`yd01`Evc5IV>gD1~#t@!n{Xb_-2SB#ERI#3G0lC(%vm@+3CbLXm>e6qdW(Y z2N>c3)Ma9PTM`;63#w=kA*{Y47X#b)NFg=~Ykfvkvq+K|*SQko0F!Ti@B9`|SciL= zf#w@GI?`!*d5j<4gf2bBnECZ~DgITifRVul1BzO!wteAmq(HncmK#I%8_|N%IO0!S z_7BQgN3DLZHZmhfE>Qd+m!Cs3X`0K8Z!N*!30$ANkQNY&&vWQwBqox&IjU?%0Z_(xLYt)B|PJRadP3Njx?~h;E6cFJ;R{ zPgKx8lL8YypTFl}1_}OWgOh@Lquvv*4ZcbvJK3vZWojYK9kv)mgtI%Pt2SevB<=3m zw#a3E-uU;ii15c=NtG~NE1wi(_xkL)zPhqDhT~6|kz{(kK{41<+1FVkHg9dh&t5#S zC*k^yk3C`kbH1ITqvn5~_W~D;^eqMc-ycDkuYv!HNRWZp?25?$EnYz8Eu|xn{U5zZ j-v757805QO@SbUwg+ZO>Y4F1YU%i+6B>P9&DDb}k^M6t> literal 0 HcmV?d00001 diff --git a/docs/images/commands/flags3.png b/docs/images/commands/flags3.png new file mode 100644 index 0000000000000000000000000000000000000000..6978366e00db432683ff1522ec8d970e5d920f78 GIT binary patch literal 27449 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

@Q)FjIBrKL@7bu7iSJ*Dw{3%|D~GAv1g0bhY7|` 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 literal 0 HcmV?d00001