Add labels, update descriptions and labels
authorAngelina Filippova <linakirsanova@gmail.com>
Wed, 1 Jul 2020 00:01:15 +0000 (03:01 +0300)
committerAngelina Filippova <linakirsanova@gmail.com>
Wed, 1 Jul 2020 00:01:15 +0000 (03:01 +0300)
config/description.exs

index ded30e204549b6fa7eac7b34d1aa3db0786539ff..b34961c49a34102310d28278f9dcda28791aeec3 100644 (file)
@@ -40,12 +40,13 @@ config :pleroma, :config_description, [
         key: :link_name,
         type: :boolean,
         description:
-          "If enabled, a name parameter will be added to the url of the upload. For example `https://instance.tld/media/imagehash.png?name=realname.png`."
+          "If enabled, a name parameter will be added to the URL of the upload. For example `https://instance.tld/media/imagehash.png?name=realname.png`."
       },
       %{
         key: :base_url,
+        label: "Base URL",
         type: :string,
-        description: "Base url for the uploads, needed if you use CDN",
+        description: "Base URL for the uploads, needed if you use CDN",
         suggestions: [
           "https://cdn-host.com"
         ]
@@ -58,6 +59,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :proxy_opts,
+        label: "Proxy Options",
         type: :keyword,
         description: "Options for Pleroma.ReverseProxy",
         suggestions: [
@@ -85,6 +87,7 @@ config :pleroma, :config_description, [
           },
           %{
             key: :http,
+            label: "HTTP",
             type: :keyword,
             description: "HTTP options",
             children: [
@@ -479,6 +482,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :uri_schemes,
+    label: "URI Schemes",
     type: :group,
     description: "URI schemes related settings",
     children: [
@@ -651,17 +655,17 @@ config :pleroma, :config_description, [
         key: :invites_enabled,
         type: :boolean,
         description:
-          "Enable user invitations for admins (depends on `registrations_open` being disabled)."
+          "Enable user invitations for admins (depends on `registrations_open` being disabled)"
       },
       %{
         key: :account_activation_required,
         type: :boolean,
-        description: "Require users to confirm their emails before signing in."
+        description: "Require users to confirm their emails before signing in"
       },
       %{
         key: :federating,
         type: :boolean,
-        description: "Enable federation with other instances."
+        description: "Enable federation with other instances"
       },
       %{
         key: :federation_incoming_replies_max_depth,
@@ -679,7 +683,7 @@ config :pleroma, :config_description, [
         label: "Fed. reachability timeout days",
         type: :integer,
         description:
-          "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it.",
+          "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it",
         suggestions: [
           7
         ]
@@ -801,6 +805,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :safe_dm_mentions,
+        label: "Safe DM mentions",
         type: :boolean,
         description:
           "If enabled, only mentions at the beginning of a post will be used to address people in direct messages." <>
@@ -840,7 +845,7 @@ config :pleroma, :config_description, [
       %{
         key: :skip_thread_containment,
         type: :boolean,
-        description: "Skip filtering out broken threads. Default: enabled"
+        description: "Skip filtering out broken threads. Default: enabled."
       },
       %{
         key: :limit_to_local_content,
@@ -904,6 +909,7 @@ config :pleroma, :config_description, [
         children: [
           %{
             key: :totp,
+            label: "TOTP settings",
             type: :keyword,
             description: "TOTP settings",
             suggestions: [digits: 6, period: 30],
@@ -920,7 +926,7 @@ config :pleroma, :config_description, [
                 type: :integer,
                 suggestions: [30],
                 description:
-                  "a period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
+                  "A period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds."
               }
             ]
           },
@@ -934,7 +940,7 @@ config :pleroma, :config_description, [
                 key: :number,
                 type: :integer,
                 suggestions: [5],
-                description: "number of backup codes to generate."
+                description: "Number of backup codes to generate."
               },
               %{
                 key: :length,
@@ -974,6 +980,7 @@ config :pleroma, :config_description, [
     group: :logger,
     type: :group,
     key: :ex_syslogger,
+    label: "ExSyslogger",
     description: "ExSyslogger-related settings",
     children: [
       %{
@@ -992,7 +999,7 @@ config :pleroma, :config_description, [
       %{
         key: :format,
         type: :string,
-        description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\".",
+        description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
         suggestions: ["$metadata[$level] $message"]
       },
       %{
@@ -1006,6 +1013,7 @@ config :pleroma, :config_description, [
     group: :logger,
     type: :group,
     key: :console,
+    label: "Console Logger",
     description: "Console logger settings",
     children: [
       %{
@@ -1017,7 +1025,7 @@ config :pleroma, :config_description, [
       %{
         key: :format,
         type: :string,
-        description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\".",
+        description: "Default: \"$date $time [$level] $levelpad$node $metadata $message\"",
         suggestions: ["$metadata[$level] $message"]
       },
       %{
@@ -1030,6 +1038,7 @@ config :pleroma, :config_description, [
   %{
     group: :quack,
     type: :group,
+    label: "Quack Logger",
     description: "Quack-related settings",
     children: [
       %{
@@ -1140,19 +1149,19 @@ config :pleroma, :config_description, [
             key: :greentext,
             label: "Greentext",
             type: :boolean,
-            description: "Enables green text on lines prefixed with the > character."
+            description: "Enables green text on lines prefixed with the > character"
           },
           %{
             key: :hideFilteredStatuses,
             label: "Hide Filtered Statuses",
             type: :boolean,
-            description: "Hides filtered statuses from timelines."
+            description: "Hides filtered statuses from timelines"
           },
           %{
             key: :hideMutedPosts,
             label: "Hide Muted Posts",
             type: :boolean,
-            description: "Hides muted statuses from timelines."
+            description: "Hides muted statuses from timelines"
           },
           %{
             key: :hidePostStats,
@@ -1164,7 +1173,7 @@ config :pleroma, :config_description, [
             key: :hideSitename,
             label: "Hide Sitename",
             type: :boolean,
-            description: "Hides instance name from PleromaFE banner."
+            description: "Hides instance name from PleromaFE banner"
           },
           %{
             key: :hideUserStats,
@@ -1209,14 +1218,14 @@ config :pleroma, :config_description, [
             label: "NSFW Censor Image",
             type: :string,
             description:
-              "URL of the image to use for hiding NSFW media attachments in the timeline.",
+              "URL of the image to use for hiding NSFW media attachments in the timeline",
             suggestions: ["/static/img/nsfw.74818f9.png"]
           },
           %{
             key: :postContentType,
             label: "Post Content Type",
             type: {:dropdown, :atom},
-            description: "Default post formatting option.",
+            description: "Default post formatting option",
             suggestions: ["text/plain", "text/html", "text/markdown", "text/bbcode"]
           },
           %{
@@ -1245,14 +1254,14 @@ config :pleroma, :config_description, [
             key: :sidebarRight,
             label: "Sidebar on Right",
             type: :boolean,
-            description: "Change alignment of sidebar and panels to the right."
+            description: "Change alignment of sidebar and panels to the right"
           },
           %{
             key: :showFeaturesPanel,
             label: "Show instance features panel",
             type: :boolean,
             description:
-              "Enables panel displaying functionality of the instance on the About page."
+              "Enables panel displaying functionality of the instance on the About page"
           },
           %{
             key: :showInstanceSpecificPanel,
@@ -1310,7 +1319,7 @@ config :pleroma, :config_description, [
         key: :mascots,
         type: {:keyword, :map},
         description:
-          "Keyword of mascots, each element must contain both an url and a mime_type key",
+          "Keyword of mascots, each element must contain both an URL and a mime_type key",
         suggestions: [
           pleroma_fox_tan: %{
             url: "/images/pleroma-fox-tan-smol.png",
@@ -1334,7 +1343,7 @@ config :pleroma, :config_description, [
       %{
         key: :default_user_avatar,
         type: :string,
-        description: "URL of the default user avatar.",
+        description: "URL of the default user avatar",
         suggestions: ["/images/avi.png"]
       }
     ]
@@ -1344,7 +1353,7 @@ config :pleroma, :config_description, [
     key: :manifest,
     type: :group,
     description:
-      "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE",
+      "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE.",
     children: [
       %{
         key: :icons,
@@ -1381,7 +1390,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_simple,
-    label: "MRF simple",
+    label: "MRF Simple",
     type: :group,
     description: "Message Rewrite Facility",
     children: [
@@ -1461,7 +1470,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_subchain,
-    label: "MRF subchain",
+    label: "MRF Subchain",
     type: :group,
     description:
       "This policy processes messages through an alternate pipeline when a given message matches certain criteria." <>
@@ -1484,7 +1493,7 @@ config :pleroma, :config_description, [
     key: :mrf_rejectnonpublic,
     description:
       "MRF RejectNonPublic settings. RejectNonPublic drops posts with non-public visibility settings.",
-    label: "MRF reject non public",
+    label: "MRF Reject Non Public",
     type: :group,
     children: [
       %{
@@ -1503,7 +1512,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_hellthread,
-    label: "MRF hellthread",
+    label: "MRF Hellthread",
     type: :group,
     description: "Block messages with too much mentions",
     children: [
@@ -1527,7 +1536,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_keyword,
-    label: "MRF keyword",
+    label: "MRF Keyword",
     type: :group,
     description: "Reject or Word-Replace messages with a keyword or regex",
     children: [
@@ -1557,14 +1566,14 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_mention,
-    label: "MRF mention",
+    label: "MRF Mention",
     type: :group,
     description: "Block messages which mention a user",
     children: [
       %{
         key: :actors,
         type: {:list, :string},
-        description: "A list of actors for which any post mentioning them will be dropped.",
+        description: "A list of actors for which any post mentioning them will be dropped",
         suggestions: ["actor1", "actor2"]
       }
     ]
@@ -1572,7 +1581,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_vocabulary,
-    label: "MRF vocabulary",
+    label: "MRF Vocabulary",
     type: :group,
     description: "Filter messages which belong to certain activity vocabularies",
     children: [
@@ -1580,14 +1589,14 @@ config :pleroma, :config_description, [
         key: :accept,
         type: {:list, :string},
         description:
-          "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted",
+          "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted.",
         suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
       },
       %{
         key: :reject,
         type: {:list, :string},
         description:
-          "A list of ActivityStreams terms to reject. If empty, no messages are rejected",
+          "A list of ActivityStreams terms to reject. If empty, no messages are rejected.",
         suggestions: ["Create", "Follow", "Mention", "Announce", "Like"]
       }
     ]
@@ -1617,6 +1626,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :base_url,
+        label: "Base URL",
         type: :string,
         description:
           "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.",
@@ -1649,6 +1659,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :proxy_opts,
+        label: "Proxy Options",
         type: :keyword,
         description: "Options for Pleroma.ReverseProxy",
         suggestions: [
@@ -1676,6 +1687,7 @@ config :pleroma, :config_description, [
           },
           %{
             key: :http,
+            label: "HTTP",
             type: :keyword,
             description: "HTTP options",
             children: [
@@ -1771,6 +1783,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :ip,
+        label: "IP",
         type: :tuple,
         description: "IP address to bind to",
         suggestions: [{0, 0, 0, 0}]
@@ -1784,7 +1797,7 @@ config :pleroma, :config_description, [
       %{
         key: :dstport,
         type: :integer,
-        description: "Port advertised in urls (optional, defaults to port)",
+        description: "Port advertised in URLs (optional, defaults to port)",
         suggestions: [9999]
       }
     ]
@@ -1792,6 +1805,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :activitypub,
+    label: "ActivityPub",
     type: :group,
     description: "ActivityPub-related settings",
     children: [
@@ -1814,7 +1828,7 @@ config :pleroma, :config_description, [
         key: :note_replies_output_limit,
         type: :integer,
         description:
-          "The number of Note replies' URIs to be included with outgoing federation (`5` to match Mastodon hardcoded value, `0` to disable the output)."
+          "The number of Note replies' URIs to be included with outgoing federation (`5` to match Mastodon hardcoded value, `0` to disable the output)"
       },
       %{
         key: :follow_handshake_timeout,
@@ -1827,6 +1841,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :http_security,
+    label: "HTTP security",
     type: :group,
     description: "HTTP security settings",
     children: [
@@ -1865,7 +1880,7 @@ config :pleroma, :config_description, [
         key: :report_uri,
         label: "Report URI",
         type: :string,
-        description: "Adds the specified url to report-uri and report-to group in CSP header",
+        description: "Adds the specified URL to report-uri and report-to group in CSP header",
         suggestions: ["https://example.com/report-uri"]
       }
     ]
@@ -1873,9 +1888,10 @@ config :pleroma, :config_description, [
   %{
     group: :web_push_encryption,
     key: :vapid_details,
+    label: "Vapid Details",
     type: :group,
     description:
-      "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it",
+      "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it.",
     children: [
       %{
         key: :subject,
@@ -1942,6 +1958,7 @@ config :pleroma, :config_description, [
   },
   %{
     group: :pleroma,
+    label: "Pleroma Admin Token",
     type: :group,
     description:
       "Allows to set a token that can be used to authenticate with the admin api without using an actual user by giving it as the `admin_token` parameter",
@@ -1949,7 +1966,7 @@ config :pleroma, :config_description, [
       %{
         key: :admin_token,
         type: :string,
-        description: "Token",
+        description: "Admin token",
         suggestions: ["We recommend a secure random string or UUID"]
       }
     ]
@@ -2114,24 +2131,24 @@ config :pleroma, :config_description, [
     key: :rich_media,
     type: :group,
     description:
-      "If enabled the instance will parse metadata from attached links to generate link previews.",
+      "If enabled the instance will parse metadata from attached links to generate link previews",
     children: [
       %{
         key: :enabled,
         type: :boolean,
-        description: "Enables RichMedia parsing of URLs."
+        description: "Enables RichMedia parsing of URLs"
       },
       %{
         key: :ignore_hosts,
         type: {:list, :string},
-        description: "List of hosts which will be ignored by the metadata parser.",
+        description: "List of hosts which will be ignored by the metadata parser",
         suggestions: ["accounts.google.com", "xss.website"]
       },
       %{
         key: :ignore_tld,
         label: "Ignore TLD",
         type: {:list, :string},
-        description: "List TLDs (top-level domains) which will ignore for parse metadata.",
+        description: "List TLDs (top-level domains) which will ignore for parse metadata",
         suggestions: ["local", "localdomain", "lan"]
       },
       %{
@@ -2159,31 +2176,32 @@ config :pleroma, :config_description, [
   %{
     group: :auto_linker,
     key: :opts,
+    label: "Auto Linker",
     type: :group,
     description: "Configuration for the auto_linker library",
     children: [
       %{
         key: :class,
         type: [:string, false],
-        description: "Specify the class to be added to the generated link. Disable to clear",
+        description: "Specify the class to be added to the generated link. Disable to clear.",
         suggestions: ["auto-linker", false]
       },
       %{
         key: :rel,
         type: [:string, false],
-        description: "Override the rel attribute. Disable to clear",
+        description: "Override the rel attribute. Disable to clear.",
         suggestions: ["ugc", "noopener noreferrer", false]
       },
       %{
         key: :new_window,
         type: :boolean,
-        description: "Link urls will open in new window/tab"
+        description: "Link URLs will open in new window/tab"
       },
       %{
         key: :truncate,
         type: [:integer, false],
         description:
-          "Set to a number to truncate urls longer then the number. Truncated urls will end in `..`",
+          "Set to a number to truncate URLs longer then the number. Truncated URLs will end in `..`",
         suggestions: [15, false]
       },
       %{
@@ -2194,7 +2212,7 @@ config :pleroma, :config_description, [
       %{
         key: :extra,
         type: :boolean,
-        description: "Link urls with rarely used schemes (magnet, ipfs, irc, etc.)"
+        description: "Link URLs with rarely used schemes (magnet, ipfs, irc, etc.)"
       }
     ]
   },
@@ -2240,6 +2258,7 @@ config :pleroma, :config_description, [
   },
   %{
     group: :pleroma,
+    label: "Pleroma Authenticator",
     type: :group,
     description: "Authenticator",
     children: [
@@ -2253,6 +2272,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :ldap,
+    label: "LDAP",
     type: :group,
     description:
       "Use LDAP for user authentication. When a user logs in to the Pleroma instance, the name and password" <>
@@ -2339,6 +2359,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :uid,
+        label: "UID",
         type: :string,
         description:
           "LDAP attribute name to authenticate the user, e.g. when \"cn\", the filter will be \"cn=username,base\"",
@@ -2354,11 +2375,12 @@ config :pleroma, :config_description, [
     children: [
       %{
         key: :enforce_oauth_admin_scope_usage,
+        label: "Enforce OAuth admin scope usage",
         type: :boolean,
         description:
           "OAuth admin scope requirement toggle. " <>
             "If enabled, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token " <>
-            "(client app must support admin scopes). If disabled and token doesn't have admin scope(s)," <>
+            "(client app must support admin scopes). If disabled and token doesn't have admin scope(s), " <>
             "`is_admin` user flag grants access to admin-specific actions."
       },
       %{
@@ -2370,6 +2392,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :oauth_consumer_template,
+        label: "OAuth consumer template",
         type: :string,
         description:
           "OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to" <>
@@ -2378,6 +2401,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :oauth_consumer_strategies,
+        label: "OAuth consumer strategies",
         type: {:list, :string},
         description:
           "The list of enabled OAuth consumer strategies. By default it's set by OAUTH_CONSUMER_STRATEGIES environment variable." <>
@@ -2506,7 +2530,7 @@ config :pleroma, :config_description, [
       %{
         key: :enabled,
         type: :boolean,
-        description: "enables new users admin digest email when `true`",
+        description: "Enables new users admin digest email when `true`",
         suggestions: [false]
       }
     ]
@@ -2514,6 +2538,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :oauth2,
+    label: "OAuth2",
     type: :group,
     description: "Configure OAuth 2 provider capabilities",
     children: [
@@ -2532,7 +2557,7 @@ config :pleroma, :config_description, [
       %{
         key: :clean_expired_tokens,
         type: :boolean,
-        description: "Enable a background job to clean expired oauth tokens. Default: disabled."
+        description: "Enable a background job to clean expired OAuth tokens. Default: disabled."
       }
     ]
   },
@@ -2616,6 +2641,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :relation_id_action,
+        label: "Relation ID action",
         type: [:tuple, {:list, :tuple}],
         description: "For actions on relation with a specific user (follow, unfollow)",
         suggestions: [{1000, 10}, [{10_000, 10}, {10_000, 50}]]
@@ -2629,6 +2655,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :status_id_action,
+        label: "Status ID action",
         type: [:tuple, {:list, :tuple}],
         description:
           "For fav / unfav or reblog / unreblog actions on the same status by the same user",
@@ -2644,6 +2671,7 @@ config :pleroma, :config_description, [
   },
   %{
     group: :esshd,
+    label: "ESSHD",
     type: :group,
     description:
       "Before enabling this you must add :esshd to mix.exs as one of the extra_applications " <>
@@ -2682,8 +2710,9 @@ config :pleroma, :config_description, [
   },
   %{
     group: :mime,
+    label: "Mime Types",
     type: :group,
-    description: "Mime types",
+    description: "Mime Types settings",
     children: [
       %{
         key: :types,
@@ -2742,6 +2771,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :http,
+    label: "HTTP",
     type: :group,
     description: "HTTP settings",
     children: [
@@ -2790,6 +2820,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :markup,
+    label: "Markup Settings",
     type: :group,
     children: [
       %{
@@ -2831,7 +2862,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_normalize_markup,
-    label: "MRF normalize markup",
+    label: "MRF Normalize Markup",
     description: "MRF NormalizeMarkup settings. Scrub configured hypertext markup.",
     type: :group,
     children: [
@@ -2887,6 +2918,7 @@ config :pleroma, :config_description, [
   },
   %{
     group: :cors_plug,
+    label: "CORS plug config",
     type: :group,
     children: [
       %{
@@ -2959,6 +2991,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :web_cache_ttl,
+    label: "Web cache TTL",
     type: :group,
     description:
       "The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration.",
@@ -2981,9 +3014,10 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :static_fe,
+    label: "Static FE",
     type: :group,
     description:
-      "Render profiles and posts using server-generated HTML that is viewable without using JavaScript.",
+      "Render profiles and posts using server-generated HTML that is viewable without using JavaScript",
     children: [
       %{
         key: :enabled,
@@ -3001,18 +3035,18 @@ config :pleroma, :config_description, [
       %{
         key: :post_title,
         type: :map,
-        description: "Configure title rendering.",
+        description: "Configure title rendering",
         children: [
           %{
             key: :max_length,
             type: :integer,
-            description: "Maximum number of characters before truncating title.",
+            description: "Maximum number of characters before truncating title",
             suggestions: [100]
           },
           %{
             key: :omission,
             type: :string,
-            description: "Replacement which will be used after truncating string.",
+            description: "Replacement which will be used after truncating string",
             suggestions: ["..."]
           }
         ]
@@ -3022,6 +3056,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_object_age,
+    label: "MRF Object Age",
     type: :group,
     description: "Rejects or delists posts based on their age when received.",
     children: [
@@ -3064,13 +3099,13 @@ config :pleroma, :config_description, [
       %{
         key: :workers,
         type: :integer,
-        description: "Number of workers to send notifications.",
+        description: "Number of workers to send notifications",
         suggestions: [3]
       },
       %{
         key: :overflow_workers,
         type: :integer,
-        description: "Maximum number of workers created if pool is empty.",
+        description: "Maximum number of workers created if pool is empty",
         suggestions: [2]
       }
     ]